新 Worker 与 navigator.serviceWorker

exe*_*ook 4 javascript service-worker progressive-web-apps

new Worker()和 和有什么区别navigator.serviceWorker.register()

var myWorker = new Worker('service-worker.js', {});
Run Code Online (Sandbox Code Playgroud)

他们只是创建了相同类型的 Service Worker 吗?

navigator.serviceWorker.register('service-worker.js').then(()=>{})
Run Code Online (Sandbox Code Playgroud)

请不要投反对票,我已经打开了 50 多个与服务人员相关的选项卡,感到不知所措和绝望,这整件事对我来说没有多大意义,无论(或者可能是由于)大量可用文档。

小智 6

他们不一样。

new Worker()创建一个Web Worker。这是一个单独的线程和执行上下文,但它仍然与当前页面会话相关,并且当用户离开页面时将终止。

Service Workers在与 Web Workers 类似的环境中运行(它们共享一些 API),但不连接到特定的页面会话,并在后台短暂运行以响应关联站点上的网络事件。