跳到主要内容

message

2024年02月07日
柏拉文
越努力,越幸运

一、认识


worker 的父级接收到来自其 worker 的消息时(也就是说,当 worker 通过 DedicatedWorkerGlobalScope.postMessage() 发送消息时),会在 Worker 对象上触发 message 事件。此事件不能取消,也不会冒泡。

二、语法


addEventListener("message", (event) => {});

onmessage = (event) => {};

三、场景


3.1 复杂计算

index.html
<script>
const worker = new Worker('./worker.js');

worker.addEventListener('message', e => {
const { data } = e;
console.log('Message from worker: ', data);
});

worker.postMessage([1, 2, 3, 4, 5]);
</script>
worker.js
function calculate(data) {
return data.reduce((prev, curr) => prev + curr, 0);
}

self.addEventListener('message', e => {
const { data } = e;
const result = calculate(data);
self.postMessage(result);
});