(一)、 工作者线程的表现
- 在原始页面环境之外,一个完全独立的二级子环境。
- 这个子环境不能与依赖单线程交互的API(如DOM)互操作。
- 可以与父环境并行执行代码。
(二)、工作者线程的类型
规范定义了三种,专用工作者线程、共享工作者线程和服务工作者线程。还有其类型未得到广泛支持或定位于小众应用程序。
-
专用工作者线程(DedicatedWorkerGlobalScope)
- 又叫工作者线程、Web Worker或Worker。可以让脚本单独创建一个JavaScript线程,以执行委托的任务(只能被创建它的页面使用)
- 使用场景:发送大量网络请求、执行文件输入/输出、进行密集计算、处理大量数据,以及实现其他不适合在页面执行线程里做的任务,导致页面响应迟钝的情况。
-
共享工作者线程(SharedWorkerGlobalScope)
- 与创建它脚本的同源脚本,都可以与它通信(多标签页之间通信)。
-
服务工作者线程(ServiceWorkerGlobalScope)
- 它的主要用途是拦截、重定向和修改页面发出的请求。
- PWA(Progressive Web App)是一种理念,使用多种技术来增强web app的功能,可以让网站的体验变得更好,能够模拟一些原生功能,比如通知推送。在移动端利用标准化框架,让网页应用呈现和原生应用相似的体验。
(三)、三个线程多功能与区别示意图
(四)、工作者线程与线程
-
共同点
1.1. 工作者线程是以实际线程实现的。
1.2. 工作者线程并行执行。
1.3. 工作者线程可以共享某些内存。
-
区别
2.1. 工作者线程不共享全部内存。
2.2. 工作者线程不一定在同一个进程里。
2.3. 创建工作者线程的开销更大。(工作者线程有自己独立的事件循环、全局对象、事件处理程序和其他JavaScript环境必需的特性)