我想为转销商数组中的每个成员并行调用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);
}

09-19 01:09