一个完全遵循Promise/A+规范的Deferred 库
JavaScript HTML
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
README.md
_deferred.js
all.html
any.html
async.html
avalon.js
bower.json
catch.html
catch2.html
catch3.html
deferred.js
ensure.html
ensure2.html
index.html
mixin.html
mmDeferred.js
mmPromise.js
newPromise.js
nextTick.html
notify.html
package.json
promise.html
resolve.html
resolve2.html
resolve3.html
state.html
state2.html
state3.html
then.html
then2.html
then3.html

README.md

mmDeferred

一个完全遵循Promise/A+规范的Deferred 库

api

  1. Deferred(mixin?): 可传入一个可选的对象或函数,修改整条Deferred链的所有Promise对象,它将返回一个Deferred对象。 相当于jQuery的promise(obj),将一个普通对象转换为Promise 对象的功能。
  2. state(), 位于Deferred对象上, 将得到Deferred对象的状态,"fulfilled", "rejected", "pedding", 一开始是"pedding"。 当对象变成"fulfilled"或 "rejected"状态时,无法再执行resolve, reject方法。resolve会将对象改变成"fulfilled",但如何执行时抛错,会转为"rejected"状态; reject会将对象改变成"rejected";notify与ensure不会改变状态;
  3. promise: 位于Deferred对象上, 一个对象属性,拥有then, otherwise, ensure方法,是负责收集回调的
    (相当而言,Deferred对象则有resolve, reject, notify方法,是负责触发回调的)
  4. then(resolvefn,rejectfn,notifyfn, ensurefn),位于Promise对象上,依次用来重写默认的"resolve,reject,notify, ensur"回调
  5. ensure: 位于Promise对象上,重写默认的ensure回调——该回调不接受参数,是总会触发的回调
  6. otherwise 位于Promise对象上,重写默认的rejected回调——出错时触发的回调
  7. notify: 位于Deferred对象上,用于触发notify回调——允许多次触发的回调
  8. resolve: 位于Deferred对象上,用于触发fulfill回调——正常触发的回调
  9. reject: 位于Deferred对象上,用于触发rejected回调——出错时触发的回调
  10. all: Deferred的静态方法,要求传入多个Promise对象,当它们都正常触发时,就执行它的resolve回调。相当于jQuery的when方法,但all更标准,是社区公认的函数。
  11. <li>any: Deferred的静态方法,要求传入多个Promise对象,最先正常触发的Promise对象,将执行它的resolve回调</li>
    

example