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);
});