JavaScript中微任务和宏任务的区别是什么?

3 min read

在JavaScript中,任务被分类为“微任务”和“宏任务”。微任务和宏任务都是执行上下文中的任务,但它们之间有一些区别:

  1. 微任务比宏任务的优先级高,也就是说当执行上下文之中既有宏任务也有微任务时,微任务的执行优先级高于宏任务。

  2. 微任务会在当前任务执行结束后立即执行,而宏任务会在事件循环的下一轮重新排列并执行。

  3. Promise的.then()和.catch()回调函数、MutationObserver和process.nextTick()等回调函数属于微任务,而setTimeout、setInterval和I/O等事件则属于宏任务。

由于微任务的优先级高以及在同一个任务执行期间中执行,所以在编写异步代码时经常使用Promise来处理异步操作,以确保在异步操作完成后立即执行需要执行的代码。