DedicatedWorkerGlobalScope: postMessage() 方法
注意:此功能仅在 专用 Web Workers 中可用。
postMessage()
方法是 DedicatedWorkerGlobalScope
接口的方法,用于向生成它的主线程发送消息。
它接受一个数据参数,该参数包含从工作线程复制到主线程的数据。数据可以是任何值或 JavaScript 对象,这些对象由 结构化克隆 算法处理,包括循环引用。
此方法还接受一个可选的 可传输对象 数组,以传输到主线程;与数据参数不同,传输的对象不再可在工作线程中使用。(在可能的情况下,对象将使用高性能零拷贝操作进行传输)。
生成工作线程的主范围可以使用 Worker.postMessage
方法向生成它的线程发送回信息。
语法
js
postMessage(message)
postMessage(message, transfer)
postMessage(message, options)
参数
返回值
无(undefined
)。
示例
以下代码片段显示了 worker.js
,其中使用 onmessage
处理程序来处理来自主脚本的消息。在处理程序中,将执行一个计算,并由此创建结果消息;然后使用 postMessage(workerResult);
将此消息发送回主线程。
js
onmessage = (e) => {
console.log("Message received from main script");
const workerResult = `Result: ${e.data[0] * e.data[1]}`;
console.log("Posting message back to main script");
postMessage(workerResult);
};
在主脚本中,必须在 Worker 对象
上调用 onmessage
,而在工作线程脚本中,您只需要 onmessage
,因为工作线程实际上是全局范围(DedicatedWorkerGlobalScope
)。
有关完整示例,请参阅我们的 基本专用工作线程示例 (运行专用工作线程)。
注意:postMessage()
每次只能发送一个对象。如上所示,如果要传递多个值,则可以发送数组。
规范
规范 |
---|
HTML 标准 # dom-dedicatedworkerglobalscope-postmessage-dev |
浏览器兼容性
BCD 表格仅在浏览器中加载
另请参见
它所属的 DedicatedWorkerGlobalScope
接口。