浏览器每一个标签页都是一个进程。
GUI渲染线程:
1. 解析HTML|CSS 构建DOM树 | CSSOM树 => 布局 => 绘制
2. 与JS引擎线程是互斥的,当执行JS线程时,GUI渲染会被挂起,当任务队列空闲时,主线程才会回去执行GUI
JS引擎线程
1. 处理JS,解析执行脚本
2. 分配、处理、执行待执行的脚本同时,处理待执行事件以及维护事件队列
3. 阻塞GUI渲染 => js为何会阻塞GUI => 本职需要
定时器的触发线程
1. 异步定时器的处理和执行 - setTimeout | setInterval
2. 接收JS引擎分配的定时器任务,并执行
3. 处理完成交由事件触发线程
事件触发线程
1. 接收所有来源的事件
2. 将回调的事件一次加入到任务队列的队尾,交给js引擎执行
异步HTTP线程
1. 异步执行请求类操作
2. 接收JS引擎线程异步请求操作
3. 监听回调,交给事件触发侧做处理