Javascript 使用返回值并行执行承诺
我想为分销商数组中的每个成员并行调用queryDatabase函数,但似乎找不到这样做的方法,因为每次调用都会在“then”部分返回一个值……当我去掉wait时,日志打印为空,因为承诺没有完成,但我相信wait会使它按顺序进行Javascript 使用返回值并行执行承诺,javascript,parallel-processing,promise,bluebird,Javascript,Parallel Processing,Promise,Bluebird,我想为分销商数组中的每个成员并行调用queryDatabase函数,但似乎找不到这样做的方法,因为每次调用都会在“then”部分返回一个值……当我去掉wait时,日志打印为空,因为承诺没有完成,但我相信wait会使它按顺序进行 // TODO: MAKE PARALLEL async function findOrgs(resellers) { var ao = []; for(const rese of resellers) { await queryDat
// 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。所有都可以:
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);
}