Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用返回值并行执行承诺_Javascript_Parallel Processing_Promise_Bluebird - Fatal编程技术网

Javascript 使用返回值并行执行承诺

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

我想为分销商数组中的每个成员并行调用queryDatabase函数,但似乎找不到这样做的方法,因为每次调用都会在“then”部分返回一个值……当我去掉wait时,日志打印为空,因为承诺没有完成,但我相信wait会使它按顺序进行

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