Macrotask Queue和Microtask Queue

分别为大任务和小任务

js开始运行时会分析代码,先执行大任务中的第一个,然后执行小任务中的所有,再执行大任务中的第二个,循环执行;

macrotasks: script,setTimeout, setInterval, setImmediate, I/O, UI rendering microtasks: process.nextTick, Promises, Object.observe, MutationObserver
console.log('start')
setTimeout(function () {
  console.log('time out')
}, 0)
Promise.resolve().then(function () {
  console.log('p1')
}).then(function () {
  console.log('p2')
})

Promise.resolve().then(function () {
  console.log('p3')
}).then(function () {
  console.log('p4')
})

console.log('end')

start
end
p1
p3
p2
p4
time out

发表评论

电子邮件地址不会被公开。 必填项已用*标注