1.1.1 • Published 8 years ago

little-promise v1.1.1

Weekly downloads
2
License
MIT
Repository
github
Last release
8 years ago

little-promise

little-promise是Promises/A+规范的一个实现,并且通过了Promises/A+的测试。

little-promise是一个精简小巧的,可读性高的Promises/A+实现。如你在使用中遇到问题,欢迎联系我:lehuading@qq.com

安装

$ npm install little-promise

测试

// 安装promises-aplus-tests和mocha
$ npm install
// 运行测试
$ npm test

文档

使用

var LPromise = require('little-promise');
new LPromise(function (resolve, reject) {
    setTimeout(function () {
        resolve('success')
    }, 1000);
}).then(function (value) {
    // resolved
    console.log(value);
}, function (reason) {
    // rejected
    console.log(reason);
});

静态方法

除了上面实例中的基本使用方法,little-promise还提供了常见的串行和并行方法。

all

参数:little-promise实例或异步函数组成的数组 返回:一个little-promise实例p

promise数组同时运行。当所有promise都处于完成状态,p从等待状态(pending)变为完成状态(resolved);当有promise处于失败状态,p从等待状态变为失败状态(rejected)。

示例:

var LPromise = require('little-promise');
LPromise.all([
    new LPromise(function (resolve, reject) {
        setTimeout(function () {
            resolve();
        }, 10);
    }),
    function (resolve, reject) {
        setTimeout(function () {
            resolve();
        }, 20);
    },
    new LPromise(function (resolve, reject) {
        setTimeout(function () {
            resolve();
        }, 30);
    })
]).then(function () {
    console.log('所有异步任务都完成了');
}, function () {
    console.log('有异步任务出错了');
});

race

参数:little-promise实例或异步函数组成的数组 返回:一个little-promise实例p

promise数组同时运行。当有一个promise处于完成状态,p从等待状态变为完成状态;当所有的promise处于失败状态,p从等待状态变为失败状态。

示例:

var LPromise = require('little-promise');
LPromise.race([
    new LPromise(function (resolve, reject) {
        setTimeout(function () {
            resolve();
        }, 10);
    }),
    function (resolve, reject) {
        setTimeout(function () {
            resolve();
        }, 20);
    },
    new LPromise(function (resolve, reject) {
        setTimeout(function () {
            resolve();
        }, 30);
    })
]).then(function () {
    console.log('有异步任务完成了');
}, function () {
    console.log('所有异步任务都出错了');
});

step

参数:异步函数组成的数组(注意与上面的方法传入的参数的区别,不能在转入little-promise实例) 返回:一个little-promise实例p

异步函数依次执行。当所有异步函数顺序执行完成后,p从等待状态变为完成状态;当有一个异步函数执行失败,p从等待状态变为失败状态。

var LPromise = require('little-promise');
LPromise.all([
    function (resolve, reject) {
        setTimeout(function () {
            resolve();
        }, 10);
    },
    function (resolve, reject) {
        setTimeout(function () {
            resolve();
        }, 20);
    },
    function (resolve, reject) {
        setTimeout(function () {
            resolve();
        }, 30);
    }
]).then(function () {
    console.log('所有异步任务依次完成了');
}, function () {
    console.log('有异步任务出错了');
});

如果你想一起来开发,欢迎和我联系:lehuading@qq.com。

Promises/A+ 规范

Promises/A+ 规范英文: https://github.com/promises-aplus/promises-spec

Promises/A+ 规范中文: http://www.ituring.com.cn/article/66566

感谢malnote的翻译博客: http://malcolmyu.github.io/malnote

License

MIT