name | title | tags | categories | info | time | desc | keywords | |||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
分享node与浏览器关于eventLoop的异同的一个小例子 |
分享node与浏览器关于eventLoop的异同的一个小例子 |
|
学习笔记 |
2019/1/20 |
node, javascript前端笔记 |
|
引用资料:
function test () {
console.log('start')
setTimeout(() => {
console.log('children2')
Promise.resolve().then(() => {console.log('children2-1')})
}, 0)
setTimeout(() => {
console.log('children3')
Promise.resolve().then(() => {console.log('children3-1')})
}, 0)
Promise.resolve().then(() => {console.log('children1')})
console.log('end')
}
test()
/**
概念解释:在一次宏任务中被塞入的相同类型的 timer 宏任务被称为同源的宏任务
比如说上面的 children2 和 children3 在同一个宏任务中被置入事件循环,则下一次执行则会先去清空执行这两个同源的宏任务,再去执行其各自生成的微任务
**/
// 以上代码在node11以下版本的执行结果(先清空所有同源的宏任务,再执行微任务)
// start
// end
// children1
// children2
// children3
// children2-1
// children3-1
// 以上代码在node11及浏览器的执行结果(顺序执行宏任务和微任务)
// start
// end
// children1
// children2
// children2-1
// children3
// children3-1