微任务和宏任务是与事件循环相关的概念,用于管理异步操作的执行顺序。
宏任务(macrotask)通常包括整体代码块、setTimeout、setInterval、I/O、UI 渲染等,它们会被放入宏任务队列中,等待事件循环执行。
微任务(microtask)包括 Promise、process.nextTick、Object.observe、MutationObserver 等,它们会被放入微任务队列中,等待当前宏任务执行完毕后立即执行。
在事件循环中,每次执行一个宏任务之后,会检查微任务队列,如果有微任务,则会依次执行微任务,直到微任务队列为空,然后再执行下一个宏任务。
这种机制保证了微任务比宏任务具有更高的优先级,可以在当前宏任务执行完毕之前立即执行,这对于一些需要立即响应的操作非常有用。