关于事件轮询的macroTasks和microTasks任务队列的疑问

console.log('1')

setTimeout(()=>{

    console.log('2')
    Promise.resolve().then(()=>{
    
        console.log(11)
        
    })
    
},0)
setTimeout(function (){

    console.log('10')
    Promise.resolve().then(()=>{
    
        console.log(12)
        
    })
    
},0)
Promise.resolve().then(()=>{

    console.log(3)
    setTimeout(function (){
    
        console.log('8')
        
    },0)
    setTimeout(function (){
    
        console.log('9')
        
    },0)
    Promise.resolve().then(()=>{
    
        console.log(4)
        
    })
    console.log(5)
    
}).then(function (){

    console.log(7)
    
})

console.log(6)

上面这段代码在浏览器的执行结果是符合预期的1,6,3,5,4,7,2,11,10,12,8,9

可是在node环境下执行结果不稳定,而且与macroTask和microTask的说法对不上,请问是什么原因导致的?

阅读 1.6k
2 个回答

之前看过一篇文章,作者在不同浏览器下做过测试,发现不同浏览器的运行结果不一致。
文章如下:
https://jakearchibald.com/201...

我的看法是,不用过多纠结,不同浏览器,不同的node版本,对异步事件执行的优先级处理逻辑都有可能不一样,大而全的说法是不存在的,必须具体环境具体分析。我之前看的时候也纠结到底哪个说法才是对的,或者说哪种说法才是最全面的,后来发现有点钻牛角尖了,建议你也不要纠结了。

推荐问题
宣传栏