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

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.lqws.cn/news/80839.html

相关文章:

  • sqlite-vec:谁说SQLite不是向量数据库?
  • 题目 3225: 蓝桥杯2024年第十五届省赛真题-回文字符串
  • 光伏功率预测 | LSTM多变量单步光伏功率预测(Matlab完整源码和数据)
  • 机器视觉图像处理之图像滤波
  • 从多巴胺的诱惑到内啡肽的力量 | 个体成长代际教育的成瘾困局与破局之道
  • Python----目标检测(《YOLO9000: Better, Faster, Stronger》和YOLO-V2的原理与网络结构)
  • 蓝云APP:云端存储,便捷管理
  • Linux入门(十三)动态监控系统监控网络状态
  • (Python网络爬虫);抓取B站404页面小漫画
  • 探秘 Minimax:AI 领域的创新先锋
  • C# 异常处理进阶:精准获取错误行号的通用方案
  • JS中的 WeakSet 和 WeakMap
  • Y1——链式前向星
  • 麒麟信安安装谷歌浏览器
  • JavaScript性能优化实战
  • 多群组部署
  • 3.需求分析与测试用例设计方法
  • [蓝桥杯]蚂蚁感冒
  • 计算机视觉NeRF
  • 某电子计数跳绳的一次修复经历
  • SystemVerilog—Interface在class中的使用
  • 图像任务中的并发处理:线程池、Ray、Celery 和 asyncio 的比较
  • Laplace 噪声
  • 什么算得到?什么又算失去?
  • 软件测评师教程 第9章 基于质量特性的测试与评价 笔记
  • Kotlin 中 companion object 扩展函数和普通函数区别
  • docker-部署Nginx以及Tomcat
  • 汽车软件 OTA 升级技术发展现状与趋势
  • 「Java教案」算术运算符与表达式
  • 一元函数积分