jQuery的延迟回调执行序列

roa*_*tie 17 jquery promise deferred

jQuery的Deferred/promise有两个结果:已解决和被拒绝.您可以将回调附加到与任一状态关联的Deferred.附件的条件已完成(与已解决相关联),失败(与拒绝关联)和始终(与两个状态相关联).当状态从挂起移动到非挂起时,我没有成功地确定回调的顺序; 即,对于完成和始终(或失败并始终),回调对每个已解决和拒绝状态执行的顺序是什么?

Tac*_*tex 13

@Malcolm的回答确实是对的.文档在很多地方都提到它,包括:


实施细节

查看Deferred模块,它使用Callbacks模块实现FIFO"回调列表".

这是用于向Deferred对象添加回调的调用堆栈:

这是用于解析/拒绝Deferred对象的调用堆栈:


Mal*_*are 6

延迟对象按回调添加到延迟对象顺序处理它们的回调.有没有优先级来done()always(),反之亦然.无论你打电话resolved()还是reject().

请参阅以下jsfiddle示例.

对原始问题的评论不正确,或者至少不完全正确.