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

Promise链未按预期执行:为何立即创建的Promise无法触发then回调?

问题分析与解决

首先看这段代码:

function foo(num) {
  return new Promise((resolve) => console.log(num));
}

foo(1).then(() => {
  foo(3);
});

为什么Promise链没继续执行?

你误解了“立即resolve的Promise”——这段代码里的Promise根本没有被resolve。

创建Promise时传入的executor函数里,你只执行了console.log(num),但完全没调用resolve()方法。这会导致Promise的状态一直卡在pending(等待),后续绑定的.then()回调永远不会被触发,所以foo(3)根本不会执行。

修正代码

只需要在打印后调用resolve(),让Promise进入resolved状态,就能触发后续的then链:

function foo(num) {
  return new Promise((resolve) => {
    console.log(num);
    resolve(); // 触发resolve,让then回调执行
  });
}

foo(1).then(() => {
  foo(3);
});

执行这段修正后的代码,就会依次打印1和3了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 10:52:41