浏览器是多进程的,每一个tab页代表一个进程,如果多个空的tab页会合为一个进程 (webkit))
每个进程下面有很多线程,我们具体介绍下:
渲染引擎的主要工作是将HTML构造为DOM树,将CSS构造为CSSOM树,DOM树与CSSOM树合并为render树,渲染为布局,最后绘制为浏览器页面。
界面需要重绘(Repaint)或由于某种操作引发回流 ( Reflow ) 时,该线程就会执行。
JS引擎线程负责解析执行javascript脚本
JS 引擎线程 和 GUI 渲染线程 是互斥的如果JS引擎执行时间过长,会阻塞渲染引擎,从而导致页面渲染速度非常慢
JS引擎在执行javascript代码时,会形成相应的执行栈,执行同步任务,异步任务的事件回调扔到任务队列。等待同步任务执行完毕,执行任务队列中的任务(宏任务,微任务)
开启定时器时,触发定时器线程,定时器结束后,事件回调函数添加到任务队列,等待JS引擎处理
当 http 请求时会开启一条请求线程
当请求完毕时,将请求的回调函数添加到任务队列,等待JS引擎处理