当前位置: 首页 > 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"

相关文章:

  • 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 枚举与类型注解进阶
  • 人民日报头版头条:青春为中国式现代化挺膺担当
  • 旅游特种兵们,这个五一“躲进”书吧
  • 居委业委居民群策群力,7位一级演员来到上海一小区唱戏
  • 七部门联合发布《终端设备直连卫星服务管理规定》
  • 深观察丨从“不建议将导师挂名为第一作者”说开去
  • “铁血防守”制造8年最快丢球,恐惧中的阿森纳什么也做不了