直接上例子
1 | //源码结构 |
下面是Deferred源码tuples:
1 | [ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ], |
resolve/reject/notify 相当于Callbacks中的 fire;
done/fail/progress 相当于Callbacks中的 add。
promise与deferred的关系
promise下面的方法:state、always、then、promise、pipe、done、fail、progress
deferred下面的方法:包括promise下面所有方法以及resolve、reject、notify方法
返回deferred.promise()时,相当于是promise对象,promise对象下面没有resolve、reject、notify方法,所以外部没有办法修改执行是的状态。
when工具方法
when返回一个不能再外部修改状态的延迟对象promise;
多延迟对象同时完成后触发done、fail、then、progress;
1 | when: function( subordinate /* , ..., subordinateN */ ) { |