roa*_*tie 17 jquery promise deferred
jQuery的Deferred/promise有两个结果:已解决和被拒绝.您可以将回调附加到与任一状态关联的Deferred.附件的条件已完成(与已解决相关联),失败(与拒绝关联)和始终(与两个状态相关联).当状态从挂起移动到非挂起时,我没有成功地确定回调的顺序; 即,对于完成和始终(或失败并始终),回调对每个已解决和拒绝状态执行的顺序是什么?
Tac*_*tex 13
@Malcolm的回答确实是对的.文档在很多地方都提到它,包括:
deferred.done()和deferred.fail()- "回调中加入它们的顺序执行."deferred.always()- "当Deferred被解决或拒绝时,回调按照添加的顺序执行"jQuery.ajax()- "无极回调- ,,.done() 和-被调用,在他们注册的顺序.".fail().always().then()查看Deferred模块,它使用Callbacks模块实现FIFO"回调列表".
这是用于向Deferred对象添加回调的调用堆栈:
always()
done()/fail()
Callbacks.add()
list.push()- 回调函数被推送到列表的末尾.这是用于解析/拒绝Deferred对象的调用堆栈:
resolve()/reject()
resolveWith()/rejectWith()
Callbacks.fireWith()
Callbacks.fire()-在列表中的回调使用FIFO顺序执行一个for循环.延迟对象按回调添加到延迟对象的顺序处理它们的回调.有没有优先级来done()过always(),反之亦然.无论你打电话resolved()还是reject().
请参阅以下jsfiddle示例.
对原始问题的评论不正确,或者至少不完全正确.
| 归档时间: |
|
| 查看次数: |
4890 次 |
| 最近记录: |