Skip to content

宏任务和微任务

February 7, 2023 | 04:00 PM

宏任务和微任务

image.png

什么是宏任务和微任务?

“宏任务” (Macro task) 和 “微任务” (Micro task) 是指 JavaScript 中的两种任务类型。宏任务是每个任务队列的主要任务类型,例如渲染任务、事件处理任务等,它们会导致整个任务队列的更新。微任务是一种小任务类型,例如 promise 的回调函数,它们会在当前宏任务完成后立即被执行。

为什么要有宏任务和微任务?

宏任务和微任务是为了保证 JavaScript 的执行是顺序的。当宏任务完成后,所有挂起的微任务会被立即执行,从而确保了页面渲染等操作是流畅的。这样可以防止因执行复杂的计算任务而导致用户体验变差。

执行顺序

setTimeout(_ => console.log(4))

new Promise(resolve => {
  resolve()
  console.log(1)
}).then(_ => {
  console.log(3)
})

console.log(2)
//答案是 1 2 3 4

一句话概括顺序就是:同微宏 核心:同步—>微任务—>宏任务依次执行—>单个宏任务中的同步、微任务、宏任务—>下一个宏任务..

常见的宏任务:定时器 常见微任务:promise(同步操作).then() .then()也是同步指定的回调函数 .then(callback) 中的回调函数才在微任务队列中 注意,promise本身是同步操作,但promise.then()是异步操作中的微任务