gpt4 book ai didi

javascript - 在另一个 deferred 中返回一个 deferred promise

转载 作者:行者123 更新时间:2023-11-29 16:59:20 27 4
gpt4 key购买 nike

考虑以下几点:

function foo(){
// Returns the jQuery deffered below.
var urlToUse;
$.ajax({
url:'someUrl',
success:function(res){urlToUse= res;}
}).then(function(){
return $.ajax({url:urlToUse,
success:function(){
//Do something
}
}); // I want to return this deffered object!
})
}

有没有办法在 promise 中返回 promise ?

最佳答案

你刚刚做到了。在 jQuery then 中可以发生 3 件事:

如果您根本不向 then 返回任何内容,则下一个链接的 then 将解析为与先前附加的 then 相同的值。

$.ajax(...)
.then(function(result){ // result = 5
// This block executes when the first AJAX resolves
// Do nothing
})
.then(function(result){ // result = 5
// This block executes right after the previous `then`
// and still uses the same resolved value
});

如果你返回了一个 promise(比如来自 jQuery ajaxDeferred),下一个链式 then将在返回的 promise 解决时解决。

$.ajax(...)
.then(function(firstAjaxResult){
// This block executes when the first AJAX resolves

// Return a promise
return $.ajax(...);
})
.then(function(secondAjaxResult){
// This will resolve when the second AJAX resolves
});

如果您返回除 promise 以外的任何内容,则下一个链接的 then 将使用前一个 then 返回的值而不是原始值来解析。

$.ajax(...)
.then(function(result){ // result = 5
// This block executes when the first AJAX resolves

// Return a modified result
return result * 3;
})
.then(function(newResult){ // newResult = 15
// This block executes right after the previous `then`
// but resolves with the modified value
});

关于javascript - 在另一个 deferred 中返回一个 deferred promise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29591312/

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