实现可以使用服务工作者处理网络调用的网络工作者的正确方法是什么。例如
- 我有一个 index.html 文件,它有自己的渲染数据逻辑
- 然后这个web worker负责发送需要渲染的数据并触发渲染过程
- webworker 将使用 service worker 来获取和缓存网络请求/json 数据。
实现可以使用服务工作者处理网络调用的网络工作者的正确方法是什么。例如
web worker 和 service worker 实际上是独立的。
如果您有一个服务工作者控制特定页面,那么来自该页面或该页面上使用的 Web 工作者的任何 HTTP 请求都将触发fetch
该服务工作者上的事件。这适用于由Web Worker触发fetch()
的HTTP 请求。XMLHttpRequest
网络工作者不需要提前“了解”服务工作者或任何事情。
请注意,Service Worker 可以像 Web Worker 一样发送和响应message
事件,因此您可以完全消除 Web Worker 并将所有逻辑转移到 Service Worker 上。但这取决于您的 Web Worker 到底在做什么,以及您希望对支持 Web Worker 但不(尚未)支持 Service Worker 的浏览器提供什么级别的支持。
Service Worker 的生命周期有限。浏览器积极卸载 Service Worker,这就是为什么event.waitUntil(promise)
存在于处理程序中的原因(虽然这只是一个请求,浏览器仍然可以杀死它)
对于规范的服务工作者使用,这是可以的,但如果你想要一个长时间运行的并行进程,你需要一个(Web)工作者。