如何理解Javascript的宏任务与微任务?

admin 百科 15
宏任务和微任务决定JavaScript事件循环执行顺序:同步代码执行完后先清空所有微任务,再执行下一个宏任务;宏任务包括script、setTimeout、用户事件等,微任务包括Promise.then、queueMicrotask等。

如何理解Javascript的宏任务与微任务?-第1张图片-佛山资讯网

宏任务和微任务是 JavaScript 事件循环里两类不同优先级的异步任务,它们决定了代码实际执行的顺序。简单说:同步代码跑完后,先清空所有微任务,再执行下一个宏任务。

宏任务是“一轮循环的主角”

每次事件循环只取一个宏任务来执行,它是调度的基本单位。常见类型包括:

  • 整体脚本<script></script>标签里的代码本身)
  • setTimeout/setInterval 回调
  • 用户事件(如 click、input)
  • UI 渲染(浏览器环境)
  • requestAnimationFrame

宏任务之间互不干扰,每执行完一个,就立刻进入微任务处理阶段。

微任务是“插队的急事”

微任务不参与轮次竞争,而是在当前宏任务结束后、下一个宏任务开始前,一口气全部执行完。常见类型有:

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

  • Promise.then/catch/finally
  • queueMicrotask()(显式添加)
  • MutationObserver 回调

关键点:如果某个微任务里又调用了 Promise.resolve().then()queueMicrotask(),新任务会加入当前微任务队列,继续执行,直到队列彻底为空。

标签: javascript java 浏览器 异步任务 为什么

发布评论 0条评论)

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