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

Promise执行器先调用resolve再绑定then处理函数的情况叫什么?

已兑现Promise绑定后续回调的情况说明

你遇到的这种情况,是向已处于兑现(fulfilled)状态的Promise添加回调函数,这是Promise设计中的标准行为,没有特别的专属术语,用这个描述即可指代该场景。

代码执行顺序分析

你的示例代码如下:

// FLOW STARTS HERE
let promise = new Promise(function(resolve, reject) {
   // THIS IS THE EXECUTOR, RUN IMMEDIATELY ON PROMISE CONSTRUCTION
   // THE PROMISE CONSTRUCTOR CALLS THIS FUNCTION, WITH WHAT ARGUMENTS?
    console.log("inPromise");

    
    resolve(value); // here, what is called?
    console.log("logged again"); // this is logged

    });

// CONTROL FLOW CONTINUES
promise.then(() => console.log("promise fulfilled"));
console.log("hello");

具体执行流程:

  • 同步执行new Promise(),立即调用内部执行器函数,先打印inPromise
  • 调用resolve(value)后,Promise状态变为fulfilled,此时无绑定的then回调,resolve的结果会被Promise暂存
  • 执行器函数继续执行,打印logged again后执行完毕
  • 执行promise.then(...):因Promise已处于fulfilled状态,传入的回调被加入微任务队列,等待同步代码执行完毕后处理
  • 同步代码继续执行,打印hello
  • 同步任务全部完成后,事件循环处理微任务队列,执行then中的回调,打印promise fulfilled

核心逻辑说明

Promise的设计天然支持延迟绑定回调:无论在Promise状态变更前还是之后绑定then/catch回调,只要状态确定,对应的回调都会被触发——状态一旦变更便不可逆,暂存的结果会在回调绑定后立即安排执行(放入微任务队列)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 17:01:03