JS事件循环
2026/6/4 12:05:54 网站建设 项目流程

单线程的 JavaScript

同步与异步

js本身是单线程的,为了处理异步任务,宿主环境(浏览器/v8)会将其交给其他线程处理,执行js的线程则会立即结束当前任务而去执行后续代码

事件循环

事件循环是宿主环境处理js异步操作的方式,让其能够非阻塞式运行的机制

浏览器事件循环

浏览器进程

主进程,无论打开多少个浏览器窗口,它仅有一个

它主要负责浏览器界面交互、用户管理和进程管理

网络进程

处理网站的数据请求和相应,网络进程内部会开启多个线程,以实现网络请求的异步话处理

渲染进程

主要是解析html、css和js等其他资源,并生成渲染树、执行布局、和绘制

浏览器中的 Event Loop

宏队列和微队列

宏队列排队宏任务(DOM操作回调, 定时器回调, UI绘制),

微队列排微任务(Promise回调)

除了微队列外,队列的种类和数量均可能不同,这取决于浏览器厂商

以chorme举例

微队列:

用于存放需要执行最快的任务,优先级极高,比如promise.then(), MutationObserver

交互队列:

用于存放用户操作后产生的事件任务,优先级次于微队列

延迟队列:

用于存放定时器到达后的回调任务,优先级次于交互队列

注意:人工合成的事件派发, 即直接在代码里写的dom.click()或dispatchEvent(),相对于浏览器而言并不是真正的用户交互,会被当作同步任务执行

1

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询