JS引擎线程
也成为JS内核,负责处理JavaScript脚本程序,与GUI线程互斥
Web APIs
异步模式API
调用之后先不管结果,继续向下执行任务
setTimeout()
setInterval()
… …同步模式API
会逐行执行代码,会对后续代码造成阻塞,直至代码接收到预期的结果之后,才会继续向下执行任务
console.log()
alert()
… …GUI线程
负责渲染浏览器界面,解析HTML、CSS、构建DOM树和RenderObject树,布局与绘制等
定时器线程
事件触发线程
异步http请求线程
Web Worker线程
注意事项
同源限制
分配给Web Worker线程的脚本必须和主线程的脚本文件同源
DOM限制
Web Worker线程所在的全局对象与主线程不一样,无法读取主线程所在网页的DOM对象,也无法使用document、window、parent这些对象,但是可以使用navigator对象和location对象
通信联系
Web Worker线程和主线程不在同一个上下文环境,不能和主线程通信,必须通过消息完成
脚本限制
Web Worker线程不能执行alert和confirm,但是可以使用XHRHttpRequest对象发送ajax请求
文件限制
Web Worker线程无法读取本地文件,只能加载网络脚本
