gpt4 book ai didi

javascript - 构建 Promise 数组不起作用,但单个 Promise 可以

转载 作者:行者123 更新时间:2023-11-28 17:48:05 29 4
gpt4 key购买 nike

我有一个循环调用一个解析 Promise 的函数,并且我需要多次调用该函数。当所有调用完成后,我想要处理所有 promise 的结果。

我有一个奇怪的情况,如果我将调用从循环中取出,Promise 就会解析,我可以在 Promise.all block 中使用它。但是,如果我多次调用该函数并 .push 到一个数组中,我会得到一个大小正确但内部没有对象的数组。

无需循环即可工作,我可以在 geocodeResult 对象中看到数据:

var geocodePromise = geocodeRows(parsed.data[0]);
Promise.all([geocodePromise]).then(function([geocodeResult]) {
console.log("IN PROMISE: " + beautify(geocodeResult, null, 2, 80));
})
.catch(function (error) {
console.log("Error: " + error);
})
.catch(function () {
console.log("Error");
});

但是,通过调用循环:

var geocodeStack = [];
for(j=0; j<parsed.data.length; j++){
geocodeStack.push(geocodeRows(parsed.data[j]));
}
console.log(beautify(geocodeStack, null, 2, 80));

Promise.all([geocodeStack]).then(function([geocodeResult]) {
console.log("IN PROMISE: " + beautify(geocodeResult, null, 2, 80));
})
.catch(function (error) {
console.log("Error: " + error);
})
.catch(function () {
console.log("Error");
});

控制台输出如下所示:

IN PROMISE: [ {}, {} ] 

谁能告诉我我做错了什么?

最佳答案

我认为你需要 Promise.all([...geocodeStack])Promise.all(geocodeStack)

您混合了两种方法并得到了 Promise.all([geocodeStack]) ,它将数组的数组传递到您的 Promise.all 中,而不是 Promise 数组。

关于javascript - 构建 Promise 数组不起作用,但单个 Promise 可以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46251242/

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