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渲染线程互斥࿰

你可能感兴趣的:(JS基础内容,javascript,前端,开发语言)