gpt4 book ai didi

javascript - 在循环的每次迭代中等待 async .done()

转载 作者:行者123 更新时间:2023-11-30 09:42:24 26 4
gpt4 key购买 nike

所以,我有这样的锁定功能:

function getMainData() {
var dfd = $.Deferred();

$.getJSON('My string that i pass',
function(result) {
if (result !== undefined) {
dfd.resolve(result);
}
})

return dfd.promise()
}

function getSpecificData() {
var dfd = $.Deferred();

var myArray = [];

for (var i = 0; i < 5; i++) {
getMainData().done(function(result) {
myArray.push(result)

dfd.resolve(myArray) //This is where I am lost.
})
}

return dfd.promise()
}

getSpecificData().done(function(result) {
console.log(result);
})

我想我知道如果将 promise 链接在一起是如何工作的,但我无法让 for 循环等待异步调用在下一次迭代之前完成。

有人能帮帮我吗?

最佳答案

for 循环无法延迟下一次迭代以等待异步代码。

您可以使用递归调用的函数来解决它

function getMainData() {
return $.getJSON('My string that i pass');
}

function getSpecificData() {
var myArray = [], def = new $.Deferred();

(function rec(i) {
getMainData().done(function(result) {
myArray.push(result);
if (i < 5 && result !== undefined) {
console.log(i)
rec(++i);
} else {
def.resolve(myArray);
}
});
})(0);

return def.promise();
}

getSpecificData().done(function(result) {
console.log(result);
});

关于javascript - 在循环的每次迭代中等待 async .done(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40526707/

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