并行执行具有 return 个值的 Promises

Parallel execution of Promises with return values

我想为 resellers 数组中的每个成员并行调用 queryDatabase 函数,但似乎无法找到执行此操作的方法,因为每次调用 returns 'then' 部分中的一个值...当我取消等待时,日志打印为空,因为承诺没有完成,但我相信等待使它成为顺序

  // 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);
}