代码解释宏任务和微任务
时间: 2023-11-02 18:38:05 浏览: 65
JS事件循环机制event loop宏任务微任务原理解析
在 JavaScript 中,异步任务分为宏任务和微任务。当异步任务完成时,会被推入宏任务队列或微任务队列中,等待被执行。
宏任务(macrotask)通常包括以下几种:
- setTimeout 和 setInterval
- DOM 事件(如 click、load)
- Ajax 请求、Fetch 请求、WebSocket 请求等网络请求
- Node.js 中的 I/O 操作等
在 JavaScript 运行时,主线程的任务执行完毕后,会执行宏任务队列中的任务。当宏任务队列中的任务执行完毕后,会检查微任务队列中是否有任务需要执行。
微任务(microtask)通常包括以下几种:
- Promise.then()、Promise.catch()、Promise.finally()
- MutationObserver
- process.nextTick(Node.js 中的微任务)
微任务的执行时机是在当前宏任务执行完毕后,在下一个宏任务执行之前。也就是说,微任务执行时机比宏任务更早,因此可以用来处理一些需要尽快处理的任务。
总之,宏任务和微任务的执行顺序是:
1. 执行当前宏任务(如 script 全局任务)
2. 执行当前宏任务产生的微任务
3. 执行下一个宏任务(从宏任务队列中取出一个任务进行执行)
4. 重复 2、3 步骤,直到宏任务队列和微任务队列都为空。
阅读全文