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

函数返回Promise时是否需添加async关键字?最佳实践确认

要不要给返回Promise的静态函数加async关键字?

先看你给出的两种写法:

原写法:

static blabla(): Promise<number> {
  return new Promise<number>((resolve) => {
    resolve(999);
  });
}

修改后的写法:

static async blabla(): Promise<number> {
  return new Promise<number>((resolve) => {
    resolve(999);
  });
}

从最佳实践角度,分两种情况判断:

  • 如果当前函数内部完全不需要使用await语法,加async属于冗余操作。async关键字的核心作用是允许你在函数内用await,同时自动把返回值包装成Promise。但你现在已经手动返回了Promise,加async不会带来实际收益,反而多了一层不必要的语法包裹。

  • 但如果未来有可能修改函数逻辑,需要调用其他异步函数并使用await,那提前加上async可以避免后续修改函数签名,减少额外工作量。

另外还有一个关键差异需要注意:同步错误的处理逻辑。

  • 原写法中,如果在new Promise代码之前出现同步错误(比如变量未定义、语法错误),会直接抛出同步异常,调用方如果不用try/catch包裹调用,就会触发未捕获错误。
  • 加了async之后,函数内部的所有同步错误都会被自动捕获,并包装成Promise.reject,调用方可以通过.catch()或者await + try/catch统一处理,不会出现同步抛错的情况。

总结:

  • 仅看当前逻辑,不需要加async,写法更简洁。
  • 如果考虑未来扩展性,或者想统一异步错误处理(避免同步抛错),可以加async,也不会有性能问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 15:28:15