宏任务和微任务的区别

B站影视 2024-12-29 18:47 2

摘要:在 JavaScript 的异步编程模型中,宏任务(Macro Task)和微任务(Micro Task)是事件循环(Event Loop)机制中的两个重要概念。它们用于管理异步操作的执行顺序。

在 JavaScript 的异步编程模型中,宏任务(Macro Task)和微任务(Micro Task)是事件循环(Event Loop)机制中的两个重要概念。它们用于管理异步操作的执行顺序。

宏任务是较大的任务块,它们在事件循环的每一轮迭代中按顺序执行。常见的宏任务包括:

微任务是更细粒度的任务,比宏任务优先级更高。微任务会在当前宏任务执行完后立即执行,并在下一个宏任务开始之前完成。

常见的微任务包括:

Promise.then/catch/finallyMutationObserverqueueMicrotask特性宏任务 (Macro Task)微任务 (Micro Task)优先级优先级低,执行顺序在微任务之后优先级高,当前宏任务执行后立即执行典型场景setTimeout、setInterval、I/O、UI 渲染等Promise.then、queueMicrotask 等执行时机每次事件循环的起始阶段当前宏任务完成后,下一个宏任务之前

以下代码展示了宏任务和微任务的执行顺序:

console.log('开始'); // 同步任务setTimeout( => {console.log('宏任务:setTimeout');}, 0);Promise.resolve.then( => {console.log('微任务:Promise');});console.log('结束'); // 同步任务

执行顺序:

同步任务直接进入主线程执行。微任务进入微任务队列。宏任务进入宏任务队列。

事件循环的顺序为:

执行主线程的同步代码。清空微任务队列。执行一个宏任务(从宏任务队列中取出)。回到第二步,重复以上流程。

来源:昊强

相关推荐