You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让多个异步函数并行执行且全部完成后再运行后续代码

你可以通过JS内置的Promise.all()方法实现需求,修改后的代码如下:

async function functionName() {
  try {
    // 直接调用三个异步函数,会同时启动执行,不会互相等待
    const task1 = function1()
    const task2 = function2()
    const task3 = function3()
    // 等待三个任务全部执行完成后再往下走
    await Promise.all([task1, task2, task3])
    // 也可以直接合并为一行写法:
    // await Promise.all([function1(), function2(), function3()])
    // 如果需要获取三个函数的返回值,可以按顺序接收:
    // const [result1, result2, result3] = await Promise.all([function1(), function2(), function3()])

    //some more awaits below this point
  } catch(err) {
    console.log(err)
  }
}

补充说明:

  • 不要在调用function1/function2/function3的时候单独加await,否则会退化为串行执行,只有把三个未完成的Promise实例一起传入Promise.all才会实现并行效果。
  • Promise.all的特性是所有传入的Promise全部成功才会返回结果数组,只要有一个任务抛出错误,就会直接进入catch块,符合你现有代码的异常处理逻辑。
  • 如果你需要即使某一个任务执行失败,也能拿到其他成功任务的结果,可以改用Promise.allSettled(),它会等待所有任务结束(无论成功失败)后返回每个任务的状态和结果,你可以自行判断处理。

内容的提问来源于stack exchange,提问作者nickcoding2

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 19:45:02