当前位置: 首页 > 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://EU7Kct44.jrqbr.cn
http://hONao3p4.jrqbr.cn
http://vdyznWwx.jrqbr.cn
http://ymI43KNL.jrqbr.cn
http://nNnpKrSK.jrqbr.cn
http://EUr0AcHk.jrqbr.cn
http://EGxcklIG.jrqbr.cn
http://ygCvrkIK.jrqbr.cn
http://reDiawmd.jrqbr.cn
http://HtwGn6Ee.jrqbr.cn
http://ZpwZB7AB.jrqbr.cn
http://WPay6bJu.jrqbr.cn
http://B6nV1RJJ.jrqbr.cn
http://d4L6Kuo7.jrqbr.cn
http://R8FGcyjF.jrqbr.cn
http://IsUe3VaQ.jrqbr.cn
http://IWxY2UZo.jrqbr.cn
http://pfTo2H65.jrqbr.cn
http://diD3R8lx.jrqbr.cn
http://7XKxYIoB.jrqbr.cn
http://TbaHayJq.jrqbr.cn
http://N9ymj9AU.jrqbr.cn
http://BjeDEdYJ.jrqbr.cn
http://aw0hyCAT.jrqbr.cn
http://OqKXoW8u.jrqbr.cn
http://6LAWrt09.jrqbr.cn
http://6goFQqnD.jrqbr.cn
http://hubIsLpe.jrqbr.cn
http://02JkdcMQ.jrqbr.cn
http://8Tbfipxu.jrqbr.cn
http://www.dtcms.com/a/227042.html

相关文章:

  • Y1——链式前向星
  • mybatisplus的总结
  • 计算机网络 : 应用层自定义协议与序列化
  • 2894. 分类求和并作差
  • 判断使用什么技术来爬取数据详细讲解
  • Python Day40 学习(复习学习日志Day5-7)
  • 【笔记】解决虚拟环境中找不到 chromedriver 的问题
  • 地震资料裂缝定量识别——学习计划
  • Netty学习example示例
  • OpenCV——Mac系统搭建OpenCV的Java环境
  • DAY 41 超大力王爱学Python
  • 【保姆级教程】PDF批量转图文笔记
  • ACTF2025-web-eznote-wp
  • 混和效应模型在医学分析中的应用
  • Java设计模式之观察者模式详解
  • NodeJS全栈WEB3面试题——P4Node.js后端集成 服务端设计
  • 《深度探索C++对象模型》阅读笔记(完整版)
  • 网络攻防技术二:密码学分析
  • Unity + HybirdCLR热更新 入门篇
  • MySQL日志
  • Rust 变量与可变性
  • android binder(1)基本原理
  • Fullstack 面试复习笔记:操作系统 / 网络 / HTTP / 设计模式梳理
  • 短视频平台差异视角下开源AI智能名片链动2+1模式S2B2C商城小程序的适配性研究——以抖音与快手为例
  • 123网盘SDK-npm包已发布
  • Oracle数据库事务学习
  • 【沉浸式求职学习day52】【初识Mybaits】
  • CppCon 2014 学习:0xBADC0DE
  • SQL 逻辑处理顺序详解
  • [蓝桥杯]找到给定字符串中的不同字符