当前位置: 首页 > news >正文

JavaScript中的宏任务和微任务

以下是关于 JavaScript 中 宏任务(Macro Task)微任务(Micro Task) 的系统梳理,涵盖核心概念、执行规则、应用场景及进阶知识,帮助我们彻底掌握异步编程的底层机制。


一、基础概念

1. 宏任务(Macro Task)
  • 定义:由宿主环境(浏览器/Node.js)发起的任务,代表一个独立的、完整的逻辑单元。
  • 常见来源
    • setTimeout / setInterval
    • I/O 操作(文件读写、网络请求)
    • DOM 事件回调(点击、滚动)
    • requestAnimationFrame(浏览器)
    • setImmediate(Node.js)
2. 微任务(Micro Task)
  • 定义:由 JavaScript 引擎发起的任务,通常用于处理高优先级的异步操作。
  • 常见来源
    • Promise.then / Promise.catch / Promise.finally
    • MutationObserver(浏览器)
    • queueMicrotask
    • process.nextTick(Node.js,优先级高于其他微任务)

二、执行顺序规则

1. 事件循环流程
  1. 执行当前调用栈(同步代码)。
  2. 检查微任务队列:清空所有微任务(递归处理新添加的微任务)。
  3. 执行一个宏任务:从宏任务队列中取出一个任务执行。
  4. 重复步骤 2-3,形成事件循环。
2. 经典执行顺序示例
console.log("Script start"); // 同步任务(宏任务)

setTimeout(() => console.log("setTimeout"

相关文章:

  • 可以做微商的网站营销策划公司的经营范围
  • 厦门市网站建设软件开发公司网页版登录入口
  • wordpress 百度地图api接口seo关键词优化是什么意思
  • 产品展示网站设计seo推广方法集合
  • 新开家政如何做网站重庆网络推广专员
  • asp 网站 源码整合营销传播成功案例
  • Spring框架漏洞攻略
  • MyBatis-Flex、MyBatis-Plus 与 Fluent-Mybatis 的比较分析
  • FastStoneCapture下载安装教程(附安装包)专业截图工具
  • 环境评价分析中土地利用现状图的制作方法
  • 基于TweenMax和SVG的炫酷弹性进度条动画特效
  • [实操]MySQL8 读写分离后,配合redis的方法与步骤
  • 水星(MERCURY)监控初始化的恢复和转码方法
  • 【C语言】多进程/多线程
  • DeepSeek-R1 现已作为全托管无服务器模型在 Amazon Bedrock上线。
  • 反向 SSH 隧道技术实现内网穿透
  • 数据库误更新操作 如何回滚
  • VMware安装ubuntu22.04.5 server
  • Java并发编程面试汇总
  • Python学习第二十三天
  • 全面了解 Cookies、Session 和 Token
  • 【Java语言】学习笔记-08面向对象【中级】包、访问修饰符、封装、继承、多态、Super、Override(重写)、Object、断点调试等细节详解(上)
  • 6.1、认证技术基础与原理
  • [unity 点击事件] 区域响应点击事件,排除子节点区域,Raycast Target 应用
  • 埋点数据采集方案
  • 14、Python 枚举与类型注解进阶