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

async函数中await的正确放置位置及插入后脚本运行报错解决方案

你的代码存在三个核心错误:

  1. await 仅能在被async关键字修饰的函数内部使用,你最初在.then()的普通回调中添加await,回调未被标记为async,触发语法错误导致脚本无法运行。
  2. 你调整后的备选代码存在语法逻辑错误:await后直接传入箭头函数的写法完全不符合规范,你需要await的是异步函数执行后返回的Promise实例,而非函数本身。
  3. 混用.then()链式调用与async/await两种异步处理语法,逻辑混乱增加出错概率。

可直接运行的修正代码

你可以直接全量替换为纯async/await写法,无需混用.then():

async function masterDeploy(PrimaryControl){
  try {
    // 2. 从项目中收集学习事件日期
    const LearnEvents = await progLearnerEvent(progGuid)                                                                                
    console.log(LearnEvents)                                                                    
    for (let b = 0; b < LearnEvents.length; b++) {                                          
      // 此处await会等待当前retLearnEvents执行完成后再进入下一轮循环
      await retLearnEvents(LearnEvents[b], progGuid, b)
      console.log(FlightPlanArray)  
      learnEventsArrComb.push(FlightPlanArray)
      console.log(learnEventsArrComb)
    }
    console.log(learnEventsArrComb)
    return learnEventsArrComb
  } catch (error) {
    DisplayError(error)
  }
}

可选优化方案(并行执行)

如果你的业务场景不要求retLearnEvents按顺序执行,可使用Promise.all实现并行调用,大幅提升运行效率:

async function masterDeploy(PrimaryControl){
  try {
    const LearnEvents = await progLearnerEvent(progGuid)                                                                                
    console.log(LearnEvents)
    // 批量生成所有异步任务
    const taskList = LearnEvents.map((event, idx) => retLearnEvents(event, progGuid, idx))
    // 等待所有任务全部执行完成
    await Promise.all(taskList)
    /* 若retLearnEvents返回FlightPlanArray,可直接获取所有结果无需依赖全局变量:
    const allFlightPlans = await Promise.all(taskList)
    learnEventsArrComb.push(...allFlightPlans)
    */
    console.log(learnEventsArrComb)
    return learnEventsArrComb
  } catch (error) {
    DisplayError(error)
  }
}

额外注意事项

  • 所有变量建议添加let/const声明,避免隐式生成全局变量引发逻辑异常。
  • 如果你需要在循环中保持串行执行,不要使用forEach遍历,普通for循环可正常支持await串行等待。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:09:02