我正在尝试返回一个使用异步调用构建的数组,如下所示:
我希望在调用 foo()
的函数中使用 myArr
function foo(){
let promiseArray = [];
let singlePromise;
let myArr = [];
for(let node of Nodes){
singlePromise = getSomePromise(node);
singlePromise.then(function(result){
myArr.push(bar(result));
});
promiseArray.push(singlePromise);
}
// return Promise.all(promiseArray)? but then I lose myArr
}
那么我如何返回myArr
?
最佳答案
推送解析为您需要的值的 promise ,而不是推送到 myArr
:
function foo() {
const promiseArray = [];
for (const node of Nodes) {
const singlePromise =
getSomePromise(node).then(function (result) {
return bar(result);
});
promiseArray.push(singlePromise);
}
return Promise.all(promiseArray);
}
如果您使用的是像 Bluebird 这样的 Promise 库(强烈推荐),你甚至可以这样做:
const foo = () =>
Promise.map(Nodes, node =>
getSomePromise(node).then(bar)
);
如果Nodes
是一个数组:
const foo = () =>
Promise.all(Nodes.map(getSomePromise)).map(bar);
关于javascript - 使用 Promise.all 从函数返回值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42746319/