1. GUI渲染线程(页面渲染做了哪些事情?主流程的渲染步骤?
主要负责页面的骨架(html)和样式(css),GUI线程分别解析html和css,构建DOM树和CSSOM树,之后布局(layout)和绘制(render)页面。(重排和重绘)
2. Js引擎线程(V8)(与GUI互斥)
2.1 互斥
GUI渲染线程和JS引擎是互斥的,当执行JS线程的时候,GUI渲染线程会被挂起,当JS任务队列空闲时,主线程才会重新执行GUI线程;
2.2 JS引擎都做了什么?------>对JS编译处理(解析,分配,阻塞)
第一:处理JS,解析执行脚本; 第二:分配,处理和执行待执行的脚本,同时处理待执行时间以及维护事件队列,setTimeout,setInterval会单独摘出来; 第三:阻塞GUI渲染,这是JS的本职工作(js报错会页面白屏---->捕获JS的error)
3. 事件触发线程
该线程接受所有来源的事件,将回调的实践依次加入到任务队列的队尾,再交还给JS执行
4. 定时器触发线程
第一:负责异步定时器的处理和执行(setTimeout,setInterval);第二:接受JS引擎分配的定时器任务并执行;第三:处理完成交由事件触发线程
5. 异步Http线程(通信)
第一:异步执行请求类操作;第二:接受JS引擎的异步请求和操作:第三:监听回调,交于事件触发进程处理