美文网首页
2019-05-21--Eventloop,浏览器环境 VS N

2019-05-21--Eventloop,浏览器环境 VS N

作者: 安乐_f487 | 来源:发表于2019-05-21 18:19 被阅读0次

例子: (来源:https://juejin.im/post/5b7057b251882561381e69bf#comment
)

setTimeout(function () {
    console.log('setTimeout1')
}, 0)
var p1 = new Promise(function (resolve, reject) {
    setTimeout(() => { resolve(1) }, 0)
})
setTimeout(function () {
    console.log('setTimeout2')
}, 0)
for (var i = 0; i < 3; i++) {
    p1.then(function (value) {
        console.log('promise then - ' + i)
    })
}

浏览器和Node环境下的结果不同
浏览器运行结果:


image.png
依次注册了3个macroTask, 3个microTask
执行第一个macroTask后,再执行第二个macroTask,再去执行剩余的所有microTask, 再执行最后一个macroTask

Node 运行结果:


image.png
浏览器环境下,microtask的任务队列是每个macrotask执行完之后执行;
在Node.js中(node11之前,node11及之后和浏览器一致),
microtask会在事件循环的各个阶段之间执行,也就是一个阶段执行完毕,就会去执行microtask队列的任务

参考:(https://juejin.im/post/5c337ae06fb9a049bc4cd218

相关文章

网友评论

      本文标题:2019-05-21--Eventloop,浏览器环境 VS N

      本文链接:https://www.haomeiwen.com/subject/wwmjzqtx.html