摘要:在 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('结束'); // 同步任务执行顺序:
同步任务直接进入主线程执行。微任务进入微任务队列。宏任务进入宏任务队列。事件循环的顺序为:
执行主线程的同步代码。清空微任务队列。执行一个宏任务(从宏任务队列中取出)。回到第二步,重复以上流程。来源:昊强
免责声明:本站系转载,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!