新闻中心

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

2025-12-08
浏览次数:
返回列表
宏任务和微任务决定J*aScript异步执行顺序:宏任务每次执行一个,结束后清空全部已就绪微任务;微任务优先级更高,按入队顺序连续执行至为空。

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

宏任务和微任务是 J*aScript 事件循环(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 已废弃,不用管

执行顺序规则

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

AdMaker AI AdMaker AI

从0到爆款高转化AI广告生成器

AdMaker AI 65 查看详情 AdMaker 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 批量更新,底层都依赖微任务机制。

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


# 复用  # 江宁租房网站建设管理  # 如何进行推广和营销策划  # 荥阳网站建设-贝壳下拉  # 晋宁推广营销招聘网络  # 外贸网站群建设  # 内容营销推广活动方案  # 泊头网站建设调试员招聘  # 世界网站建设游戏app  # 海盐企业网站推广平台  # 各大网站推广  # 将其  # 有哪些  # 也会  # 器中  # vue  # 为空  # 清空  # 结束后  # 更高  # 回调  # 异步任务  # 浏览器  # node  # node.js  # js  # java  # javascript  # react 


相关栏目: 【 科技资讯46185 】 【 网络学院92790


相关推荐: 京东单号查询入口_京东快递订单追踪入口  Sublime怎么配置Nim语言环境_Sublime Nim代码高亮与补全  C++ map遍历方法大全_C++ map迭代器使用总结  高德地图总提示网络异常怎么办 高德地图离线导航设置与网络排查方法  CSS Grid如何控制元素对齐_align-items与justify-items组合使用  小猿搜题在线学习页面在哪_小猿搜题在线学习中心入口  拼多多购物车商品数量无法修改如何处理 拼多多购物车操作优化方法  poki免费入口快捷访问 poki人气小游戏直接玩站点  在J*a中如何开发简易博客标签推荐系统_博客标签推荐项目实战解析  Go语言中高效处理x-www-form-urlencoded表单数据  LINUX怎么设置定时任务_LINUX crontab配置教程  响应式图片在网页设计中的正确实现方法  Lar*el DB::listen 事件中的查询执行时间单位解析  大象笔记网页版入口 印象笔记网页版登录入口  ArrayList与LinkedList核心操作的Big-O复杂度分析  快手极速版在线观看 官方网页版登录地址  C++ typeid如何获取类型信息_C++ RTTI运行时类型识别用法  《噬血代码2》新预告片发布 展示游戏剧情  解决Python单元测试中Mock异常方法调用计数为零的问题  html5 app怎么运行环境_配html5 app运行环境【教程】  大麦的“候补”是什么意思 大麦候补购票规则【详解】  Bilibili动漫最新防封地址发布-Bilibili动漫2025年最稳正版入口推荐  1688商家版怎样分析买家画像精准供货_1688商家版分析买家画像精准供货【供货策略】  MinIO大规模对象列表性能瓶颈深度解析与外部元数据管理策略  QQ邮箱官方网站登录入口_QQ邮箱网页版在线使用  126邮箱网页版官方入口 126邮箱账号在线登录平台  生成rdflib自定义SPARQL函数:参数匹配与实践指南  手机屏幕碎了但能正常使用怎么办 手机外屏碎裂的修复建议  Go语言中对Map值调用带指针接收者方法:原理与最佳实践  J*aScript中高效清空DOM列表元素:解决for循环中断与任务管理问题  Go调试环境为何无法启动_Go调试器启动失败原因与解决策略  拼多多视频播放卡顿如何处理 拼多多视频播放优化技巧  学习通网页版官方登录 超星学习通电脑端入口指南  在Qt QML中通过Python字典动态更新TextEdit内容的教程  俄罗斯浏览器官网直达链接 俄罗斯浏览器最新在线入口导航  在J*a项目里如何构建对象之间的契约_接口约束的实际落地  微信网页版官方入口教程 微信网页版网页版快速登录步骤  C++如何操作注册表_Windows平台下C++读写注册表的API函数详解  163邮箱官方主页登录 直达网易邮箱登录核心页面  绝地鸭卫平a核爆刀流玩法攻略  Composer中的^和~符号代表什么_精通Composer版本号语义化约束  三星GalaxyZFold5怎样在相册制作折叠屏分镜_iPhone三星GalaxyZFold5相册制作折叠屏分镜【创意编辑】  lar*el怎么安全地存储和获取配置文件中的敏感信息_lar*el敏感信息安全存储方法  怎样更改Windows系统的默认安装路径_避免C盘爆满的终极设置【技巧】  搜狗浏览器如何使用密码生成器创建强密码 搜狗浏览器内置密码安全工具  Win11如何开启讲述人功能 Win11屏幕阅读器(讲述人)开启与关闭【教程】  解决深度学习模型训练初期异常高损失与完美验证准确率问题  将HTML动态表格多行数据保存到Google Sheet的教程  深入理解J*aScript中的B样条曲线与节点向量生成  机器学习中对数变换预测结果的反向还原 

搜索