Javascript 如何解决地图链中的承诺功能?

Javascript 如何解决地图链中的承诺功能?,javascript,promise,chaining,Javascript,Promise,Chaining,我希望下面代码中的所有slowad()都能并行执行,但在它们全部解决之前,我不想执行下一个.map()步骤。怎么做 async function slowAdd(a) { return new Promise( (resolve,reject) => setTimeout(() => resolve(a+5), 1000) ) } async function calcArray(list) { return list .map( a => a+1 )

我希望下面代码中的所有slowad()都能并行执行,但在它们全部解决之前,我不想执行下一个.map()步骤。怎么做

async function slowAdd(a) {
  return new Promise( (resolve,reject) => setTimeout(() => resolve(a+5), 1000) )
}

async function calcArray(list) {
  return list
    .map( a => a+1 )
    .map( a => slowAdd(a) )
    .map( a => a+1 )
}

async function main() {
  const list = [1, 2, 3, 4, 5]
  const newList = await calcArray(list)
  console.log(newList)
}

main()
  .catch(err => {
    console.error(err);
  })
  .then(() => process.exit());

将它放在一个
承诺中。全部
,然后您需要在
中再添加一个
.map
。然后
执行后续操作:

异步函数slowad(a){ 返回新承诺((解析,拒绝)=>setTimeout(()=>resolve(a+5),1000)) } 异步函数calcArray(列表){ 回报你的承诺( 列表 .map(a=>a+1) .map(a=>slowad(a)) ) .then(addedResults=>addedResults.map(a=>a+1)); } 异步函数main(){ 常量列表=[1,2,3,4,5] const newList=wait calcArray(列表) console.log(newList) }
main()

异步函数slowad(a){ 返回新承诺((解析,拒绝)=>setTimeout(()=>resolve(a+5),1000)) } 异步函数calcArray(列表){ 回报你的承诺( 列表 .map(a=>a+1) .map(a=>slowad(a)) ) .then(addedResults=>addedResults.map(a=>a+1)); } 异步函数main(){ 常量列表=[1,2,3,4,5] const newList=wait calcArray(列表) console.log(newList) } main()