我想为转销商数组中的每个成员并行调用queryDatabase函数,但是由于每次调用都在'then'部分中返回一个值,因此似乎无法找到一种方法来执行此操作...当我拿走await时,日志打印为空,因为承诺没有完成,但是我相信等待使它按顺序进行
// TODO: MAKE PARALLEL
async function findOrgs(resellers) {
var ao = [];
for(const rese of resellers) {
await queryDatabase(rese)
.then((results) => {
ao = ao.concat(results.map(re => re._id));
})
}
console.log("done!", ao);
}
是否有可能做到这一点?
最佳答案
使用Promise.all
代替:
async function findOrgs(resellers) {
const idArrs = await Promise.all(resellers.map((rese) => (
queryDatabase(rese)
.then(results => results.map(({ _id }) => _id))
)))
const ao = [].concat(...idArrs);
console.log("done!", ao);
}