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

js的时间循环的讲解

JavaScript 事件循环(Event Loop)是其运行时的核心机制,负责处理异步操作,确保单线程的 JavaScript 能够高效地处理并发任务。下面从多个角度详细解析事件循环机制:

1. 核心概念

(1)执行栈(Call Stack)
  • 定义:JavaScript 是单线程的,所有同步任务都在执行栈中依次执行。
  • 特点:函数调用会形成一个栈帧,执行完毕后出栈。
(2)任务队列(Task Queue)
  • 宏任务队列(MacroTask Queue):包含整体代码(script)、setTimeoutsetIntervalsetImmediate(Node.js)、I/O 操作等。
  • 微任务队列(MicroTask Queue):包含 Promise.thenMutationObserverprocess.nextTick(Node.js)等。
(3)事件循环(Event Loop)
  • 核心逻辑:不断从任务队列中取出任务并放入执行栈执行,直到队列清空。

2. 事件循环的执行流程

  1. 执行同步代码:首先执行执行栈中的所有同步任务。
  2. 处理微任务:同步任务执行完毕后,清空微任务队列(按入队顺序执行,期间新产生的微任务会被加入队列尾部并继续处理)。
  3. 处理宏任务:微任务队列清空后,从宏任务队列中取出一个任务执行,然后再次检查并清空微任务队列,以此循环。

示例代码

javascript

console.log('1'); // 同步任务,直接入栈执行setTimeout(() => {console.log('2'); // 宏任务,放入宏任务队列
}, 0);Promise.resolve().
http://www.xdnf.cn/news/10695.html

相关文章:

  • 100V离线语音通断器
  • java笔记08
  • 15-2021剑侠情缘2-各种修复完善+虚拟机单机端+外网服务端整理+文本教程+视频教程
  • Linux服务器安装GUI界面工具
  • 【数据集】NCAR CESM Global Bias-Corrected CMIP5 Output to Support WRF/MPAS Research
  • Redis部署架构详解:原理、场景与最佳实践
  • Java函数式编程(中)
  • 第十二节:第五部分:集合框架:Set集合的特点、底层原理、哈希表、去重复原理
  • 《QDebug 2025年5月》
  • 基于大模型的急性乳腺炎全病程风险预测与综合治疗方案研究
  • Playwright Python API 测试:从入门到实践
  • 滑动窗口 -- 灵神刷题
  • C# 异常处理进阶:精准获取错误行号的通用方案
  • ubuntu安装devkitPro
  • 什么算得到?什么又算失去?
  • ps曝光度调整
  • 继承(全)
  • 2024年数维杯国际大学生数学建模挑战赛D题城市弹性与可持续发展能力评价解题全过程论文及程序
  • YOLOv10改进|爆改模型|涨点|C2F引入空间和通道注意力模块暴力涨点(附代码+修改教程)
  • 九(4).存在指针的引用,不存在引用的指针
  • uniapp-商城-77-shop(8.2-商品列表,地址信息添加,级联选择器picker)
  • window ollama部署模型
  • 2025年主流编程语言全面分析与学习指南
  • 【MySQL】使用C语言连接数据库
  • Linux内核体系结构简析
  • 长尾关键词布局与SEO实战策略
  • PythonWeb项目开发脚手架
  • String和StringBuilder和StringBuffer
  • NodeJS全栈WEB3面试题——P3Web3.js / Ethers.js 使用
  • android binder(四)binder驱动详解