Promise和setTimeout执行顺序

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后输出。

猜你喜欢

转载自blog.csdn.net/Lc_style/article/details/105787713