2

new Worker()和 和有什么不一样navigator.serviceWorker.register()

var myWorker = new Worker('service-worker.js', {});

他们都只是创建同一种服务工作者吗?

navigator.serviceWorker.register('service-worker.js').then(()=>{})

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

4

1 回答 1

3

它们是不相同的。

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

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

于 2018-06-14T16:44:33.420 回答