Promises/A+规范
原文地址:<a href=”https://promisesaplus.com/”>Promises/A+</a>
译文地址:<a href=”http://www.ituring.com.cn/article/66566″>【翻译】Promises/A+规范</a>
根据Promises/A+规范实现一个promise
总结其要求如下:
(a).Promise表示一个异步操作的最终结果。与Promise最主要的交互方法是通过将函数传入它的then方法从而获取得Promise最终的值或Promise最终最拒绝(reject)的原因。
(b)核心的 Promises/A+ 规范不设计如何创建、解决和拒绝 promise,而是专注于提供一个通用的 then 方法。
(c)then方法接受两个可选参数onFulfilled、onRejected。两个参数分别用来接收异步操作结果或者拒因.两个参数调用次数不能多于1次
(d)then方法可以被一个promise多次调用:当promise成功执行时,所有 onFulfilled 需按照其注册顺序依次回调;当 promise 被拒绝执行时,所有的 onRejected 需按照其注册顺序依次回调。
(e).then方法必须返回一个promise对象,以被链式操作
(f).promise三种状态:执行态、拒绝态、等待态
(g).一旦状态改变,就不会再变,任何时候都可以得到这个结果.即如果改变已经发生了,你再对Promise对象添加回调函数,也会立即得到这个结果。这与事件(Event)完全不同,事件的特点是,如果你错过了它,再去监听,是得不到结果的。
几个实现Promises/A+规范的库:
- bluebird (https://github.com/petkaantonov/bluebird )
- q (https://github.com/kriskowal/q Angularjs的$q对象是q的精简版)
- then (teambition作品 https://github.com/teambition/then.js )
- when (https://github.com/cujojs/when )
- async (https://github.com/caolan/async 最简单的)
- eventproxy(朴灵作品 https://github.com/JacksonTian/eventproxy,使用event来处理流程,也是不错的尝试)