gpt4 book ai didi

javascript - 使用 Promise 更好地处理 AJAX 嵌套?

转载 作者:行者123 更新时间:2023-12-03 11:28:08 25 4
gpt4 key购买 nike

我有一个嵌套的 AJAX 调用,其中每个级别都必须等待前一个级别完成才能执行。我正在使用 promise ,但我不知道它如何帮助解决以下情况。

var me = this;

initA()
.done(function () {
initB.apply(me, arguments)
.done(function () {
initC.apply(me, arguments)
.done(function () {
initD.apply(me, arguments)
});
});
});

是否有更好的方法来执行上述嵌套?

最佳答案

使用 then 方法,只要您的函数返回一个 Promise,Promise 库就会在进入下一个 then 回调之前尝试解析返回的 Promise。有了这个,您只需执行bind,而不是apply

在下面的示例中,我使用 jQuery 的延迟对象,但我相信对于大多数 Promise 库来说应该是相同的

var me = {something:"world"};

function dotimeOut(){
console.log(this);
var def = jQuery.Deferred();
setTimeout(function(){
def.resolve(1);
},1000);
return def.promise();
}

dotimeOut()
.then(dotimeOut.bind(me))
.then(dotimeOut.bind(me))
.then(dotimeOut.bind(me));

/* This is the same as doing the below
initA()
.then(function(){
return initB.apply(me,arguments);
})
.then(function(){
return initC.apply(me,arguments);
})
.then(function(){
return initD.apply(me,arguments);
})
*/
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

关于javascript - 使用 Promise 更好地处理 AJAX 嵌套?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26835873/

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