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

【高频考点精讲】JavaScript事件循环机制:从宏任务微任务到渲染时机

JavaScript事件循环机制:从宏任务微任务到渲染时机

【初级】前端开发工程师面试100题(一)
【初级】前端开发工程师面试100题(二)
【初级】前端开发工程师的面试100题(速记版)

大家好,我是全栈老李。今天咱们来聊聊JavaScript的事件循环机制,这个知识点看似简单,但真正能说清楚的人还真不多。我见过不少工作3-5年的前端,面试时被问到事件循环还是一脸懵。别担心,看完这篇文章,保证你彻底搞懂!

浏览器里的"多线程"假象

JavaScript是单线程的,这意味着它一次只能做一件事。那为什么我们感觉浏览器能同时处理那么多任务呢?这就是事件循环的功劳。想象一下,你是个餐厅服务员(JS线程),虽然只有你一个人,但你能同时处理多桌客人:先给1号桌上菜,然后去2号桌点单,再回来给3号桌结账…这就是事件循环的基本思路。

浏览器内核其实有多个线程协作:

  • JS引擎线程(主线程)
  • 定时器线程
  • 异步HTTP请求线程
  • GUI渲染线程
  • 事件触发线程

但记住,真正执行JS代码的只有一个线程!

事件循环的完整流程

来,咱们拆解下事件循环的具体步骤:

  1. 执行全局Script同步代码:这些代码会创建执行上下文,压入调用栈
  2. 清空微任务队列:包括Promise.then、MutationObserver等
  3. 渲染页面(不一定每次循环都渲染)
  4. 执行一个宏任务:包括setTimeout、setInterval、I/O、UI交互事件等
  5. 重复2-4步骤
console.log('1. 同步代码开始'); // 同步代码立即执行setTimeout(() => {console.log('6. 宏任务 setTimeout');
}, 0);Promise.resolve().then

相关文章:

  • P12167 [蓝桥杯 2025 省 C/Python A] 倒水
  • Python Transformers 库介绍
  • 慧星云荣登杭州AI卧龙图
  • 未来乘用车电气/电子(E/E)架构与商用车电气/电子架构有何不同?
  • 692. 前K个高频单词(map的练习)
  • Linux操作系统复习
  • 小火电视桌面TV版下载-小火桌面纯净版下载-官方历史版本安装包
  • 链表系列一>两两交换链表中的结点
  • #什么是爬虫?——从技术原理到现实应用的全面解析 VI
  • Java集成Redisson实现分布式锁(实战)
  • 热带气旋【CH报文数据插值】中央气象台-台风路径数据每小时插值
  • 【EDA】Multi-Net Routing(多网布线)
  • 【计算机视觉】CV实战项目 - 深入解析基于HOG+SVM的行人检测系统:Pedestrian Detection
  • 写在后面的话
  • 11.AOP开发
  • BS客户端的单点登录
  • 东南亚与中东小游戏市场出海调研报告
  • 7.0 sharpScada的sql数据的安装
  • 如何解决windows端口被占用
  • Kubernetes 节点 Not Ready 时 Pod 驱逐机制深度解析(下)
  • 最高法知产庭年度报告:民事案件二审发回重审率持续下降
  • 好未来:2025财年收入增长51%,下个财年提高整体盈利能力是首要任务
  • 加拿大财长:加拿大需要抗击美国关税
  • 全球84%的珊瑚礁已遭受白化事件影响
  • 广东省发展改革委原副主任、省能源局原局长吴道闻被开除公职
  • 推进“三个免于”,上海试点首发进口化妆品快速通关模式