gpt4 book ai didi

javascript - 有没有更好的方法来按特定顺序执行一堆部分异步的 jQuery 函数?

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

我有四个功能必须按特定顺序完成。除了其中一个之外,所有这些函数都在其中执行一些异步 AJAX 操作,但是它们(必须)也执行其他操作。所以这些是我自己的函数,我通过做这种事情把它们变成了延迟 promise 对象:

function populateOfferSettings() {
return $.Deferred(function (deferred) {
//Whole bunch of stuff happens here, including async AJAX
deferred.resolve();
}).promise();
}

这实际上与此结合使用时效果很好:

populateOfferSettings().then(viewReady);

当我有两个以上的功能时,问题就出现了。实际上我至少有四个。我尝试了最直观的解决方案,但失败了:

populateOfferSettings().then(populateSegmentationSettings).then(populateHousehold).then(viewReady);

由于我不明白的原因,所有这些功能都已执行,但没有等待 promise 完成——它们只是全部触发。所以我尝试了这个,它实际上按预期工作,每个函数都等待前一个函数解决:

populateOfferSettings().then(function () {
populateSegmentationSettings().then(function () {
populateHousehold().then(function () {
viewReady();
});
});
});

虽然我写了一个辅助函数来简化实现,但这感觉很冗长。我也不太明白为什么我最初的尝试失败了。有没有我遗漏的东西,或者这是我能得到的最简单的东西吗?

最佳答案

您应该能够继续调用 then,但会返回链中的下一个 promise。

populateOfferSettings()
.then(function () { return populateSegmentationSettings(); })
.then(function () { return populateHousehold(); })
.then(function () { viewReady(); });

关于javascript - 有没有更好的方法来按特定顺序执行一堆部分异步的 jQuery 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20049617/

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