javascript的微任务和宏任务有什么区别_执行顺序如何?

admin 百科 13
微任务在当前宏任务结束后立即执行并清空队列,宏任务则每次只执行一个;事件循环每轮依次执行宏任务、收集微任务、清空微任务队列、可选UI渲染。

javascript的微任务和宏任务有什么区别_执行顺序如何?-第1张图片-佛山资讯网

微任务和宏任务的核心区别在于执行时机和优先级:微任务在当前宏任务结束后立即执行,且必须清空整个微任务队列;宏任务则按事件循环一轮一轮调度,每次只取一个。

执行顺序是固定的四步循环

浏览器中 JavaScript 的事件循环严格遵循以下顺序(每轮):

  • 执行一个宏任务(如 script 全局代码、setTimeout 回调、点击事件等)
  • 执行过程中遇到的微任务(如 Promise.then、queueMicrotask)暂不执行,而是加入微任务队列
  • 当前宏任务一结束,立刻连续执行所有已排队的微任务(FIFO,队列清空为止)
  • 微任务清空后,浏览器可能触发 UI 渲染(如有 DOM 变更),然后进入下一轮,取下一个宏任务

哪些是宏任务,哪些是微任务

常见宏任务:整体 script 脚本、setTimeout/setInterval、I/O 回调、UI 渲染、DOM 事件(click、input)、requestAnimationFrame(注意:它属于宏任务,但渲染前执行)

常见微任务:Promise.then/catch/finally、queueMicrotask、MutationObserver 回调

立即学习“Java免费学习笔记(深入)”;

⚠️ 注意:Node.js 中 process.nextTick 是微任务,且优先级高于 Promise.then,但这是 Node 独有,浏览器不支持。

标签: javascript java js node.js node 浏览器 区别 点击事件

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~