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

JavaScript创建Promise时能否仅传入单个参数?

问题解答

1. 仅传入resolve创建Promise是否合法?

完全合法。JavaScript函数本身允许忽略不需要的入参,Promise构造函数的执行器参数本身是普通JS函数,你只声明接收第一个resolve参数完全符合ECMAScript规范,你给出的代码let promise = new Promise((resolve) => {});可以正常运行,没有任何语法问题。

2. 该写法是否属于良好开发实践?

分场景判断:

  • 如果你确认你的Promise执行逻辑100%不会出现任何异常、不存在任何需要触发reject的场景,这种写法没有任何问题,不需要强行声明用不上的reject参数,反而会增加冗余代码。
  • 但要注意一个隐藏的风险:即使你没有手动调用reject,如果Promise执行体中的代码抛出同步错误(比如访问未定义变量的属性、数组越界等),JavaScript会自动将该错误作为reject原因抛出,如果你没有为该Promise添加catch处理逻辑,会触发未捕获的Promise rejection报错。示例如下:
let promise = new Promise((resolve) => {
  // 若undeclaredObj未定义,这里会抛出同步错误,自动触发reject
  resolve(undeclaredObj.data)
})

额外优化建议:如果你的Promise只是用来返回一个确定的成功结果,可以直接使用更简洁的Promise.resolve(返回值)语法,不需要手动调用Promise构造函数,代码可读性更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 22:27:01