jQuery的延迟/承诺有两个结果:已解决并被拒绝.您可以将回调附加到与每个状态相关联的Deferred.完成附件的条件(与解决相关联),失败(与拒绝关联),并始终(与两个状态相关联).当状态从未决状态移动到非挂起时,我没有成功地尝试确定回调的顺序;即对于完成和永远(或者失败并总是),回调对于每个被解决和被拒绝的状态执行的顺序是什么?
解决方法
@马尔科姆的回答确实是正确的.该文档在许多地方都提到,其中包括:
> deferred.done()
和deferred.fail()
– “回调按照添加的顺序执行”.
> deferred.always()
– “当Deferred被解决或拒绝时,回调按照添加的顺序执行”
> jQuery.ajax()
– “Promise callbacks – .done(),.fail(),.always()和.then() – 按照注册顺序被调用.
实施细节
看看Deferred module,它使用实现FIFO“回调列表”的Callbacks module.
> always()
> list.push()
– 回调函数是pushed到列表的末尾.
这里是用于解析/拒绝Deferred对象的调用堆栈:
> Callbacks.fire()
– 列表中的回调使用a for
loop以FIFO顺序执行.
原文地址:https://www.jb51.cc/jquery/176717.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。