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

JS、浏览器——栈和队列(事件循环相关)

  • 调用栈(Call Stack):这是一个栈(LIFO,后进先出)结构,记录当前正在执行的函数。它属于执行上下文管理知识。

  • 任务队列(Task Queue):这是一个队列(FIFO,先进先出)结构,存放等待执行的回调函数。它属于调度策略知识。

它们共同组成了事件循环的两个核心角色:“栈”负责当前做什么,“队列”负责接下来要做什么。

在这里,我们只学习栈和队列的相关内容,涉及到事件循环的知识可移步我的另一篇文章【浏览器——事件循环】

一、js引擎执行代码过程

  1. 引擎先执行所有同步代码(填满并清空调用栈)。

  2. 遇到异步API(如setTimeoutfetch),引擎不等待,直接交给Web APIs(浏览器提供)去处理(处理后的回调函数会放在队列中,等待调用),自己继续执行后续代码。

  3. 调用栈完全清空后,事件循环才会从任务队列中取出回调函数,压入调用栈执行。

二、任务队列

任务队列包含两类:微任务队列和宏任务队列。

宏任务:由宿主环境(浏览器/Node)发起的任务

微任务:由 JS 引擎自身发起的任务,优先级高于宏任务

宏任务微任务

setTimeout

setInterval

setImmediate(Node)

I/O操作

UI 渲染

MessageChannel

...

Promise.then()/catch()/finally()

async/await(实质是 Promise)

MutationObserver(浏览器)

process.nextTick(Node,优先级最高)

...

三、执行机制

记住这句口诀:“一个宏任务,一筐微任务”

在每一轮事件循环中,执行机制是这样的:

  1. 宏任务队列中取出一个最旧的任务执行。
  2. 执行完毕后,检查微任务队列
  3. 清空(执行完)微任务队列中的所有任务。
  4. 进入下一轮循环,再取下一个宏任务。

关键点:微任务会在下一个宏任务开始之前全部执行完毕。

http://www.jsqmd.com/news/1079772/

相关文章:

  • 移动端开发工具按键精灵手机版安卓/IOS开发必备键盘按键键码值(keyCode)对照表
  • 最值得大学生考的十大证书:2026年高含金量考证通关指南
  • 大模型训练全流程实战指南工具篇——大模型训练参数调优实战!
  • 【课程设计/毕业设计】基于小程序的校园社团资讯发布与交互系统设计与实现 高校学生社团组织管理信息化小程序设计与实现【附源码、数据库、万字文档】
  • 真实复盘:舵机软件研发的日常,没有捷径,只有深耕
  • Element UI el-upload 多文件上传踩坑与解决方案
  • 第三卷:《组合逻辑:没有记忆的“直肠子”侠客》
  • PCF80可以做共定位分析吗?从细胞邻近关系看懂真实肿瘤微环境
  • 智能旅游中的路线规划与体验提升
  • 人工排班不均引发员工投诉,智能排班平衡班次分配降低离职风险
  • 不止是补能设备!三款家用充电桩深度体验,解锁多元用车新方式
  • 工业级SRAM芯片高速低功耗存储方案
  • 番外篇:时序逻辑——“他终于开始记仇了”
  • 一文讲清必火AI的业务结构与AI增长逻辑
  • 【毕业设计】基于 SpringBoot 的学生社团招新与活动管理系统设计与实现 轻量化高校社团日常运维小程序设计与实现(源码+文档+远程调试,全bao定制等)
  • IntelliJ IDEA Windows安装全链路拆解:从JDK配置失败到激活失效,6步精准定位+5分钟极速修复
  • 口碑好的装修公司哪个靠谱
  • ClaudeAPI 知识库落地指南:从资料整理到上线使用
  • Apache Tomcat 11.0.23 发布:实现 Jakarta EE 11 部分规范,多方面改进引关注!
  • Hive 数据仓库
  • 小程序计算机毕设之基于 SpringBoot 的社团成员管理与活动统计系统设计与实现 校园文化建设下高校社团服务管理系统设计与实现(完整前后端代码+说明文档+LW,调试定制等)
  • 小程序毕业设计-基于 SpringBoot 与微信小程序的美妆线上商城设计与实现 前后端分离架构下美妆店铺销售服务小程序设计与实现(源码+LW+部署文档+全bao+远程调试+代码讲解等)
  • 330kV线路距离保护设计:从原理到整定与调试的工程实践
  • DiffusionGemma与自回归模型的对决:26B MoE文本扩散模型的推理效率实测
  • 掌握Stardew Valley自动化:Pathoschild模组集合完全指南
  • 小程序制作平台哪家好该怎么挑选?
  • 从文档到问答助手:Claude API 在知识库检索中的应用
  • 《Windows 10深度攻略》第2版 - 第1章
  • FK-Percolation相变解析性证明:从簇展开到对偶性的数学物理桥梁
  • 拓扑数据分析核心算法:FB持久性算法原理与应用详解