微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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顺序执行.

原文地址:https://www.jb51.cc/jquery/176717.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐