首页 > web前端 > js教程 > 正文

JavaScript中什么是宏任务和微任务_执行顺序如何

夢幻星辰
发布: 2025-12-08 03:43:22
原创
224人浏览过
宏任务和微任务决定JavaScript异步执行顺序:宏任务每次执行一个,结束后清空全部已就绪微任务;微任务优先级更高,按入队顺序连续执行至为空。

javascript中什么是宏任务和微任务_执行顺序如何

宏任务和微任务是 JavaScript 事件循环(Event Loop)中的两类异步任务,它们决定了代码的执行时机和顺序。简单说:宏任务一次只执行一个,执行完后会清空所有当前已就绪的微任务;微任务则在每次宏任务结束后、渲染前集中执行,且会一直执行到微任务队列为空。

宏任务有哪些

宏任务由宿主环境(浏览器或 Node.js)提供,每次从宏任务队列中取出一个执行。常见宏任务包括:

  • 全局脚本(同步代码)本身就是一个宏任务
  • setTimeout / setInterval
  • setImmediate(Node.js 独有)
  • I/O 操作、UI 渲染(浏览器中)、用户交互事件(如 click)

微任务有哪些

微任务优先级更高,在每个宏任务结束后立即执行,且不中断。常见微任务包括:

  • Promise.then/catch/finally 的回调(注意:new Promise(fn) 中的 fn 是同步执行的)
  • queueMicrotask()
  • MutationObserver 回调
  • Object.observe 已废弃,不用管

执行顺序规则

事件循环按如下节奏运行:

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

标贝悦读AI配音
标贝悦读AI配音

在线文字转语音软件-专业的配音网站

标贝悦读AI配音 66
查看详情 标贝悦读AI配音
  • 执行一个宏任务(如 script、setTimeout 回调)
  • 执行过程中遇到微任务(如 Promise.then),将其加入微任务队列
  • 宏任务执行完,立即执行所有当前微任务(按入队顺序,且新加入的也会被执行,直到队列为空)
  • 执行 UI 渲染(浏览器中,可选,若需更新界面)
  • 取下一个宏任务,重复上述流程

例如这段代码:

console.log(1);
setTimeout(() => console.log(2), 0);
Promise.resolve().then(() => console.log(3));
console.log(4);
登录后复制

输出顺序是:1 → 4 → 3 → 2。因为 1 和 4 是同步宏任务;3 是微任务,紧接在第一轮宏任务后执行;2 是下一轮宏任务,排在最后。

基本上就这些。理解宏微任务的关键不是死记类型,而是抓住“宏任务之间夹着一整轮微任务”这个节奏。它直接影响异步逻辑的时序,比如 Vue 的 nextTick、React 的 setState 批量更新,底层都依赖微任务机制。

以上就是JavaScript中什么是宏任务和微任务_执行顺序如何的详细内容,更多请关注php中文网其它相关文章!

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号