有关JS事件循环,发现了以往认知外的情况:
代码
console.log("script start");
setTimeout(function () {
console.log("setTimeout");
}, 0);
Promise.resolve()
.then(function () {
console.log("promise1");
})
.then(function () {
console.log("promise2");
});
Promise.resolve().then(function () {
console.log("promise3");
});
console.log("script end");
结果:
script start
script end
promise1
promise3
promise2
setTimeout
问题
那三个promise.then中的log的顺序为什么不是1、2、3?而是1、3、2?
1、script start
2、把setTimeout添加到宏任务
3、Promise.resolve().then,把promise1添加到微任务
4、Promise.resolve().then,把promise3添加到微任务
5、script end
6、promise1,把promise2添加到微任务
7、promise3
8、promise2