1.GUI 渲染线程:主要用来处理 DOM 树解析,渲染,重绘(与 DOM 相关)等
2.JS 引擎线程:执行Javascript 脚本
3.事件触发线程:负责管理事件队列,交给 js 引擎执行,诸如 DOM 绑定的事件(onclick onmouseenter等),定时器计时结束,请求结束,当满足条件后,对应的回调函数会添加到事件队列(也就是任务队列)
事件队列:主要用来存放不同的事件(定时器,用户触发的事件,请求事件)的回调函数
当到达了相应的条件( 如定时器到了,用户点击按钮,请求完成并相应后)后,事件触发线程,会满足条件的回调函数,添加到 js 引擎线程中的任务队列中等待执行。
定时器线程:setimeout,setInterval 所在的线程,主要对定时器进行计时,定时时间到后,
由事件触发线程回调函数添加到事件队列中
异步网络请求线程:在该线程内进行异步请求,请求状态变更后,如果由回调,由事件触发线程将回调处理添加到事件队列中