【发布时间】:2021-08-14 13:26:01
【问题描述】:
我正在学习 js 中的 Promise,对此我有一些疑问,代码如下:
Promise.resolve().then(() => {
console.log(0);
return Promise.resolve(4);
}).then((res) => {
console.log(res)
})
Promise.resolve().then(() => {
console.log(1);
}).then(() => {
console.log(2);
}).then(() => {
console.log(3);
}).then(() => {
console.log(5);
}).then(() => {
console.log(6);
})
输出与我的预期相差甚远,我认为它会是 0 1 4 2 3 5 6,因为我在 MDN 上看到了这个
Promise.resolve() 方法返回一个用给定值解析的 Promise 对象
所以 log() 方法不应该在数字 1 后面触发吗?
我做错了什么?
【问题讨论】:
-
此外,即使我们将
Promise.resolve(4)替换为Promise.resolve(4).then(res=>res),它的工作原理也是一样的。但是,then链接在相同的位置上会推动4在输出中更进一步。 -
如果我们将
Promise.resolve(4)替换为Promise.resolve(4).then(res => console.log(res));,那么订单将是0 1 4 ....