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
相关产品推荐
相关产品推荐

