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

TypeScript异步函数应直接返回值还是返回Promise.resolve()?

TypeScript async函数返回写法与调用规范解答

两种写法的正确性对比

两种写法语法层面都可正常运行,但asyncFunctionTwo是更符合async函数设计规范的推荐写法:

  • 只要函数被async关键字修饰,无论返回普通值还是Promise实例,运行时都会自动将返回值包装为Promise对象返回,因此asyncFunctionOne中手动调用Promise.resolve(returnObject1)属于多余操作,没有实际意义
  • 补充说明:示例代码中new object { ... }的写法不符合JS/TS语法规范,正确的对象字面量声明不需要加new object,直接写const returnObject = { fieldOne: object1, ... }即可

调用时的await使用规则

两种写法最终返回的都是Promise类型,如果你需要拿到实际的返回对象数据做后续处理,两个函数调用时都需要加await,或者通过.then()回调的方式获取结果。
如果不加await直接取值,你拿到的只是Promise实例,无法直接访问返回对象上的属性,示例如下:

// 错误用法
const wrongRes = asyncFunctionTwo('1','2','3')
console.log(wrongRes.fieldOne) // 运行报错,Promise实例上不存在fieldOne属性

// 正确用法
const correctRes = await asyncFunctionTwo('1','2','3')
console.log(correctRes.fieldOne) // 正常读取属性值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 10:15:04