# webworker **Repository Path**: coderzjd/webworker ## Basic Information - **Project Name**: webworker - **Description**: webworker - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-12-29 - **Last Updated**: 2024-01-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ### 1、work 线程和主线程通讯 - 1.onmessage 监听消息(on 或者 addEventListener) - 2.onerror 监听错误 - 3.postMessage 发送消息 - 4.terminate 终止线程 ### 2、postMessage 细节 - 1、在 JavaScript 的执行模型中,postMessage 通常被认为是一个宏任务(macrotask),因为它会导致一个新的事件循环 - 2、postMessage()调用时必须传参,否侧会报错 - 3、在主页面与 worker 之间传递的数据是通过拷贝,而不是共享来完成的(JSON 序列化) - 4、通过(可转移对象)来传递大量数据[[可转移对象](https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Workers_API/Transferable_objects)] ### 3、worker 中可用的函数和接口 - 1、你可以在 web worker 中使用大多数的标准 JavaScript 特性,包括: - 1、Navigator - 2、XMLHttpRequest - 3、Array、Date、Math 和 String - 4、setTimeout() 和 setInterval() ### 4、注意事项 - 1、在一个 worker 中最主要的你不能做的事情就是直接影响父页面。包括操作父页面的节点以及使用页面中的对象。 - 2、你只能间接地实现,通过 DedicatedWorkerGlobalScope.postMessage(en - US) 回传消息给主脚本,然后从主脚本那里执行操作或变化。 ### 5、其他类型的 worker - 1、ServiceWorkers 基本上是作为代理服务器,位于 web 应用程序、浏览器和网络(如果可用)之间。它们的目的是(除开其他方面)创建有效的离线体验,拦截网络请求,以及根据网络是否可用采取合适的行动并更新驻留在服务器上的资源。它们还将允许访问推送通知和后台同步 API。 - 2、Audio Worklet 提供了在 worklet(轻量级的 web worker)上下文中直接完成脚本化音频处理的可能性。