JS中的Event Loop 事件循环机制

前言

Event Loop 也是 JavaScript 的重点知识之一,为了讲清楚,我会从浏览器进程,其中的渲染进程包含的线程等方面,来仔细说明。各个知识点都是相关联的,简单地说出宏任务和微任务并不能帮我们很好地理解整个事件循环机制。

浏览器是多进程的

浏览器进程可以简单分为以下几点:

  • Browser 进程——浏览器的主进程,负责协调和主控,该进程只有一个。它可以控制页面的显示,和与用户的交互。负责各个页面的管理,创建和销毁进程。可以将渲染进程得到的内存中的 Bitmap(位图)绘制到用户界面上。同时它还负责网络资源的下载管理。
  • 第三方插件进程。该进程与第三方插件是一对一的关系,在使用的时候才会创建。
  • GPU进程。负责3D绘制。
  • 渲染进程——即我们所说的浏览器内核。每个 Tab 页面都有一个渲染进程,互不影响。它主要用于页面渲染、脚本执行、事件处理。

渲染进程

渲染进程主要包含以下几个线程:

  1. GUI渲染线程
    负责浏览器渲染界面,解析 HTML、CSS,生成 RenderTree。负责回流和重绘。
    与JS引擎线程互斥,在JS引擎线程执行时,GUI 渲染线程会挂起(冻结),保存在一个队列中,等到JS引擎线程空闲的时候,立即被执行。

  2. JS引擎线程
    JS内核。负责处理JS脚本。等待执行任务队列中的任务。一个Tab页面只有一个JS线程。与GUI渲染线程互斥࿰

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值