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

JavaScript ES8 async/await场景下,如何跳过不需要等待结果的异步任务?

实现方案

直接调用promise实例不添加await关键字即可,主线程触发该异步任务后会立刻向下执行后续逻辑,不会产生阻塞。
需要注意的是:如果该异步任务运行抛出异常,没有对应错误处理会触发全局的unhandledRejection警告,因此建议给该任务附加独立的catch逻辑,错误处理不会侵入主流程的try/catch块。

修改后的代码示例:

// 注意:使用await的函数必须声明为async
const doMyTasks = async () => {
   try {
      // 第一个任务:需要等待结果
      let prom_t1 = util.promisify(myUpdateRecord);
      let res_rec = await prom_t1();
      
      // 第二个任务:不需要等待结果,触发即走
      let prom_t2 = util.promisify(shootNotificationEmails);
      // 移除await,附加独立错误处理,不阻塞后续任务
      prom_t2(res_rec).catch(err => {
        console.log(`邮件通知发送失败:${err.message}`)
      });
      
      // 第三个任务:无需等第二个任务完成,直接执行
      let prom_t3 = util.promisify(restHouseKeep);
      await prom_t3();

   } catch(error) {
     console.log(`主流程执行失败:${error.message} [stack: ${error.stack}]`);
   }
};

方案优势

  • 完全符合ES8+语法规范,不需要回退到回调式的原始调用
  • 独立错误处理和主流程隔离,邮件任务失败不会影响核心业务逻辑运行
  • 后续如果需要调整为等待邮件任务完成,仅需加回await关键字即可,改造成本极低

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 04:45:03