news 2026/5/8 17:21:38

HTML5中Worker线程与主线程之间PostMessage通信逻辑

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
HTML5中Worker线程与主线程之间PostMessage通信逻辑

Worker与主线程通过postMessage通信,本质是结构化克隆+异步事件驱动,不共享内存;数据被克隆副本传输,修改不影响原对象;支持Transferable Objects实现ArrayBuffer零拷贝。Worker线程与主线程通过 postMessage 通信,本质是**结构化克隆 + 异步事件驱动**,不共享内存,也不直接访问对方作用域。通信基础:单向异步、数据拷贝而非引用主线程和 Worker 各自拥有独立的全局执行环境(Window 或 WorkerGlobalScope),无法直接读写对方变量。调用 postMessage(data) 时:浏览器对 data 执行**结构化克隆算法(Structured Clone Algorithm)**:支持对象、数组、Date、RegExp、Blob、File、ArrayBuffer、TypedArray 等,但不支持函数、DOM 节点、undefined、Symbol 或循环引用; 克隆后的数据被序列化并跨线程传输,原对象在发送方保持不变; 接收方在 message 事件中拿到的是全新副本,修改它不会影响发送方; 整个过程异步,无阻塞,也不保证顺序(但在同一线程内多个 postMessage 调用通常按序触发事件)。主线程启动 Worker 并监听消息主线程使用 new Worker('path/to/worker.js') 创建实例后,需显式绑定 message 事件监听器:const worker = new Worker('calc.js');worker.postMessage({ type: 'start', data: [1, 2, 3, 4] });worker.onmessage = function(e) { console.log('收到 Worker 返回:', e.data); // e.data 是克隆副本};// 或用 addEventListenerworker.addEventListener('message', e => { if (e.data.type === 'result') { document.getElementById('output').textContent = e.data.value; }});Worker 内部收发消息的写法Worker 全局作用域中,this 指向 self(即 WorkerGlobalScope),可直接调用 postMessage 向主线程发消息,并监听 message 事件: AI Code Reviewer AI自动审核代码

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 7:03:42

抖音下载神器:告别手动保存,3分钟批量获取无水印视频

抖音下载神器:告别手动保存,3分钟批量获取无水印视频 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fall…

作者头像 李华
网站建设 2026/4/13 13:05:11

AI绘画神器Anything V5实测:看看它能画出多美的图片

AI绘画神器Anything V5实测:看看它能画出多美的图片 1. 引言 1.1 关于Anything V5 Anything V5是基于Stable Diffusion模型专门优化的一款AI绘画工具,它专注于生成高质量的动漫风格图像。这个模型在CivitAI等社区广受欢迎,特别适合需要快速…

作者头像 李华
网站建设 2026/4/29 21:44:52

Tailwind CSS 完整类名对照表(中文版)

Tailwind CSS 完整类名对照表(中文版) > 本文基于 Tailwind CSS 官方文档及实战总结,适合前端开发者快速查阅。 📖 目录 布局与容器类间距类尺寸类字体与文本类背景类边框类效果类交互与状态类响应式前缀暗色模式前缀颜色系统…

作者头像 李华
网站建设 2026/4/16 15:05:44

实测Emotion2Vec+ Large:9种情绪识别准确率高达84%,小白也能轻松上手

实测Emotion2Vec Large:9种情绪识别准确率高达84%,小白也能轻松上手 1. 引言:语音情感识别的新标杆 想象一下,当你对着智能音箱说话时,它能准确感知你的情绪状态——是开心、愤怒还是悲伤,并做出相应的回…

作者头像 李华