我的印象是,一系列 Promise 返回“then”链中的最后一个 Promise。然而,当我测试以下内容时,情况似乎并非如此:
function a() {
return new Promise(function(resolve, reject) {
setTimeout(function() {
console.log('1');
resolve(1);
}, 1000);
}).then((num) => {
setTimeout(function() {
console.log('2');
return 2;
}, 1000);
});
}
a().then((num) => {
console.log('a is done running');
console.log('finally, ', num);
});
Run Code Online (Sandbox Code Playgroud)
目前代码输出
1
a is done running
finally, undefined
2
Run Code Online (Sandbox Code Playgroud)
最底层的履行函数不应该仅在链中的所有 Promise 完成时才运行吗?
我怎样才能让它输出以下内容?
1
2
a is done running
finally, 2
Run Code Online (Sandbox Code Playgroud)