【发布时间】:2013-04-25 02:14:01
【问题描述】:
jQuery 的 Deferred/promise 有两种结果:resolved 和 denied。您可以将回调附加到与任一状态关联的 Deferred。附件的条件是完成(与已解决相关)、失败(与拒绝相关)和始终(与两种状态相关)。当状态从挂起变为非挂起时,我一直试图确定回调的顺序,但没有成功;即,对于 done 和 always(或 fail 和 always),对于每个已解决和已拒绝的状态,回调执行的顺序是什么?
【问题讨论】:
-
我很确定它没有定义。它不应该被真正定义,你永远不需要依赖它。
-
非常明确。首先,将调用失败或完成。接下来,总是会被调用。它不能是任何其他顺序。回调将触发 fifo
-
先进先出规则:DEMO.
-
正如@Beetroot-Beetroot 的演示所表明的那样,它完全是先进先出,而不是 Kevin-B 建议的完成/失败总是先于。应该有人将 Beetroot-Beetroot 的评论作为答案 - 它似乎是正确和明确的。