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

JavaScript Promise中的resolve/reject函数在哪里定义?命名是否固定?

resolve 与 reject 的来源

你传给Promise构造函数的回调函数叫做执行器(executor),会在new Promise实例化的过程中被Promise内部逻辑同步调用。
resolve和reject本质就是Promise构造函数内部预先定义好的两个工具函数,构造函数调用你传入的执行器时,会按「第一个参数为成功状态触发函数、第二个参数为失败状态触发函数」的固定顺序把这两个内部方法作为实参传入,你在执行器里拿到的两个参数就是这两个内置函数。

至于为什么不能用myPromise.resolve的形式调用:执行器的运行时机早于Promise实例创建完成并返回的时机,执行器运行时你还没有拿到myPromise这个实例对象,自然不可能通过实例调用这两个方法。注意不要和Promise.resolve这个全局静态方法混淆,二者作用相似但属于不同的调用入口。

关于参数命名的问题

这两个形参的名字完全可以自定义,你命名为resolve1、success、ok、fail都不会有任何语法问题,它们不是JS预先注册的关键字或者保留字。
Promise构造函数只会固定按顺序给执行器传递两个实参,和你给形参起什么名字没有任何关联。业界统一命名为resolve和reject只是约定俗成的编码规范,目的是提升代码可读性,没有任何强制要求。

你完全可以按如下方式编写代码,功能完全不受影响:

const myPromise = new Promise((successCallback, failCallback) => {
  setTimeout(() => {
    successCallback('foo');
  }, 300);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 03:15:06