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

JavaScript中Promise的resolve和reject函数来自何处?

Promise构造函数中resolve/reject函数的来源解析

你完全可以把这两个函数理解成JavaScript引擎自动递到你手里的“状态开关”——既不是来自Promise类,也不需要你自己定义,是语言层面内置的工具。

具体来说:

  • 当你执行new Promise(回调函数)时,JavaScript引擎会立刻调用你传入的这个回调,同时把两个预定义好的函数作为参数传进去。你给它们起什么名字都行(比如你示例里的Resolved、Rejected,或者常用的resolve、reject),本质都是这两个内置函数。
  • 第一个函数的作用是把当前Promise实例的状态从pending(等待)切换到fulfilled(成功),同时可以传递成功的结果;第二个函数则是切换到rejected(失败)状态,传递失败原因。

为什么说它们不是来自Promise类?
Promise类本身的静态方法比如Promise.resolve()、Promise.reject()是直接返回一个新的已决议的Promise实例,而你在构造函数里拿到的这两个函数,是专门绑定当前正在创建的这个Promise实例的——调用它们只会改变当前实例的状态,和静态方法完全是两回事。

用伪代码模拟一下引擎的行为,你就能更清楚:

// 你写的回调
const yourExecutor = (Resolved, Rejected) => {
  Resolved("Success");
};

// 引擎内部的逻辑(简化版)
function createPromise(executor) {
  // 为当前Promise实例生成专属的状态切换函数
  const resolve = (value) => {
    // 把当前Promise的状态改成fulfilled,保存value
  };
  const reject = (reason) => {
    // 把当前Promise的状态改成rejected,保存reason
  };
  // 立刻执行你传入的回调,把这两个函数传进去
  executor(resolve, reject);
}

// 你调用new Promise时,其实就是触发上面的逻辑
const promiseTest = createPromise(yourExecutor);

简单总结:这两个函数是JavaScript语言在创建Promise实例时,自动提供给你的专属工具,用来控制这个实例的状态流转,名字可以随便取,但功能是语言内置好的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 00:05:21