【ECMAScript】专用工作者线程、共享工作者线程、服务工作者线程

本文详细介绍了JavaScript中的工作者线程(包括专用Worker、共享Worker和服务Worker)、它们之间的区别,以及它们如何通过`postMessage`和`terminate`等方法进行通信。讨论了线程在浏览器进程中的定位和应用场景。
摘要由CSDN通过智能技术生成

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. 服务工作者线程

        服务工作者线程专用工作者线程共享工作者线程截然不同。它的主要用途是拦截、重定向和修改页面发出的请求,充当网络请求的仲裁者的角色。

注:以上,如有不合理之处,还请帮忙指出,大家一起交流学习~

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值