Thenable.js: another Promise
项目的初衷,是抱着学习的目的,去了解、认识Promise的特性,顺路按照个人的习惯,改编了一份属于自己的 "Promise" 对象
除了仿制了 Promise 大部分特性外,还添加了 整合 其他 promise/a 规范的小小功能,像 Promise 和 jQuery.Deferred 等,终于能愉快一起玩耍啦,有情人终成兄妹~~~
初始化
熟悉 Promise 对象的同学,可这么用:
var thenable = {;};thenable;
个人偏向这么用:
var thenable = ;thenable;thenable;
两者等价
API
1. thenable.resolve(any: All)
触发状态 "resolved",进入 then 的 resolved 相关回调[done部分]。
如果 thenable.resolve(obj)
中,obje是一个 promise/a 规范的对象【肯定也可以 resolve 一个 Thenable 对象,必须的】,那么,将等待 obj 完成后,才会继续往下执行
举个例子:
var thenable = ;thenable;thenable;
2. thenable.reject(any: All)
触发 "rejected" 状态,进入 then 和 catch 中相关的回调[fail部分] 如果 reject 一个 promise/a 规范对象,并不会等待此对象执行完毕。
3. thenable.then(done: Function, fail: Function)
done: Function
状态为 resolved 时的回调
fail: Function
状态为 rejected 时的回调,相当于设置了一个 catch 的回调。
如果 then 的任意一个回调函数,无论是 done 和 fail,返回的是 promise/a 规范的对象,都会等待此对象的更变,而决定链条接下来的状态。
var thenable = ;thenable;thenable;// 开始第二条链thenable;
4. thenable.catch(fail: Function)
等价于 thenable(null, fail: Function)