Js(一 Event-Loop)

宏任务:

setTimeout
I/O
setInterval
setImmediate
主线程
MessageChannel

微任务:

Promise 系列 .then .catch .finally
process.nexttick
MutationObserver

console.log(1)

setTimeout(() => {
  console.log(8)
}, 2000)

setTimeout(() => {
  console.log(3)
  Promise.resolve().then(() => {
    console.log(4)
  })
  setTimeout(() => {
    console.log(6)
  }, 3000)
}, 1000)

new Promise((resolve, reject) => {
  console.log(5)
  resolve()
}).then(() => {
  console.log(7)
})

console.log(2)

结果:1 - 5 - 2 - 7 - 3 - 4 - 8 - 6
解释:微任务优先级大于宏任务,newPromise不属于微任务会立刻执行,主线程执行完打印152,微任务执行打印7,第一个宏任务执行打印3,出现一个微任务打印4,没有其他微任务了,出现一个宏任务,打印8,没有其他微任务,执行最后一个宏任务,打印6

你可能感兴趣的:(Js(一 Event-Loop))