gpt4 book ai didi

jquery - 将多个 did() 回调链接到同一个延迟 promise

转载 作者:行者123 更新时间:2023-12-03 22:25:29 24 4
gpt4 key购买 nike

简而言之,我希望有一个在成功的 ajax 调用时始终触发的常规回调,然后是根据调用方法的位置而定的单独回调功能。

这似乎有效。我的问题是,这是否是对 Promise 对象的正确使用,以及是否可以安全地假设同一类型的多个 Promise 回调始终按顺序堆栈?

var dfd = $.Deferred(),
promise = dfd.promise();

promise.done(function(){
console.log(1);
}).done(function(){
console.log(2);
});

dfd.resolve();

http://jsfiddle.net/4ax4nxbh/

最佳答案

这是 jQuery 中延迟对象的正确且有记录的使用。文档clearly states :

Callbacks are executed in the order they were added.

它在其他 Promise 库中的工作方式有所不同,通常 .then 无论如何都优于 .done (稍后在答案中解释)。然而,考虑到您使用的是 jQuery,如果它们是同步的,它会按顺序堆叠得很好。

所以你的问题的直接答案是肯定的。

但是,您也可以使用异步代码来完成此操作,并使用.then更好地链接:

promise.then(function(){
console.log(1);
}).then(function(){
console.log(2);
}).then(function(){
return $.get(...);
}).then(function(){
console.log(3); // this always executes after the $.get finishes.
});

基本上,done 添加一个处理程序并返回相同的 Promise,而 .then 返回一个从上一个 Promise 链接的新 Promise。一般来说,我只会使用 .done 来终止链,并且如果您想保留返回值(function(){ 的参数)

关于jquery - 将多个 did() 回调链接到同一个延迟 promise ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26530282/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com