1. 工作者线程
- 在传统线程模型中,多线程有能力读写共享内存空间。除了SharedArrayBuffer外,从工作者线程进出的数据需要复制或转移。
- 根据浏览器引 擎的实现,工作者线程可能与页面属于同一进程,也可能不属于。例如Chrome的Blink引擎对共享工作者线程和服务工作者线程使用独立的进程。
- 工作者线程有自己独立的事件循环、全局对象、事件处理程序和 其他 JavaScript 环境必需的特性。
2. 专用工作者线程(Web Worker)
专用工作者线程,顾名思义,只能被创建它的页面使用。
属性和方法 | 说明 | 示例 |
Worker.prototype.postMessage() | 功能:用于通过异步消息事件向工作者线程发送信息 | <略> |
Worker.prototype.terminate() | 功能:用于立即终止工作者线程 | <略> |
Worker.prototype.onmessage = | 功能:在工作者线程中发生MessageEvent类型的消息事件时会调用指定给该属性的处理程序 | <略> |
Worker.prototype.onerror = | 功能:在工作者线程中发生 ErrorEvent 类型的错误事件时会调用指定给该属性的处理程序 | <略> |
属性和方法 | 说明 | 示例 |
DedicatedWorkerGlobalScope.postMessage() | 功能:与 worker.postMessage() 对应的方法,用于从工作者线程内部向父上下文发送消息 | <略> |
DedicatedWorkerGlobalScope.close() | 功能:与 worker.terminate() 对应的方法,用于立即终止工作者线程 | <略> |
DedicatedWorkerGlobalScope.importScripts() | 功能:用于向工作者线程中导入任意数量的脚本 | <略> |
DedicatedWorkerGlobalScope.name | 功能:可以提供给 Worker 构造函数的一个可选的字符串标识符 | <略> |
3. 共享工作者线程
共享工作者线程可以被多个不同的上下文使用,包括不同的页面。任何与创建共享工作者线程的脚本同源的脚本,都可以向共享工作者线程发送 消息或从中接收消息。
4. 服务工作者线程
服务工作者线程与专用工作者线程和共享工作者线程截然不同。它的主要用途是拦截、重定向和修改页面发出的请求,充当网络请求的仲裁者的角色。
注:以上,如有不合理之处,还请帮忙指出,大家一起交流学习~