jQuery的延期回调执行顺序

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

解决方法

@马尔科姆的回答确实是正确的.该文档在许多地方都提到,其中包括

> deferred.done()deferred.fail() – “回调按照添加的顺序执行”.
> deferred.always() – “当Deferred被解决或拒绝时,回调按照添加的顺序执行”
> jQuery.ajax() – “Promise callbacks – .done(),.fail(),.always()和.then() – 按照注册顺序被调用.

实施细节

看看Deferred module,它使用实现FIFO“回调列表”的Callbacks module.

以下是将回调添加到Deferred对象的调用堆栈:

> always()

> done()/fail()

> Callbacks.add()

> list.push() – 回调函数pushed到列表的末尾.

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

> resolve()/reject()

> resolveWith()/rejectWith()

> Callbacks.fireWith()

> Callbacks.fire() – 列表中的回调使用a for loop以FIFO顺序执行.

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...