Promise.then()先执行
setTimeout后执行
代码如下:
(function test() {
setTimeout(function() {console.log(4)}, 0);
new Promise(function executor(resolve) {
console.log(1);
for( var i=0 ; i<10000 ; i++ ) {
i == 9999 && resolve();
}
console.log(2);
}).then(function() {
console.log(5);
});
console.log(3);
})()
输出结果是 1,2,3,5,4
原因:
then()和setTimeout执行顺序,即setTimeout(fn, 0)在下一轮“事件循环”开始时执行,Promise.then()在本轮“事件循环”结束时执行。因此then 函数先输出,setTimeout后输出。
本文探讨了JavaScript中Promise.then()与setTimeout()的执行顺序。通过一个具体示例,展示了在事件循环机制下,Promise.then()如何在当前轮次结束时执行,而setTimeout()则在下一轮开始时执行。理解这一机制对于掌握异步编程至关重要。
3037

被折叠的 条评论
为什么被折叠?



