当我第一次听说这些术语时,我想,好吧,他们正在用单独的线程做同样的事情。那么为什么我们需要这两个术语?
但说实话,这两个术语及其行为方式之间存在巨大差异。
会尝试详细解释。
这两者之间的共同点是
网络工作者
服务人员
Service Worker 的生命周期
1。报名
if ('serviceWorker' in navigator) { // wrap it in try/catch / promisses await navigator.serviceWorker.register('/service-worker.js') }
2。安装
下面的代码我们需要将其写入service-worker.js
self.addEventListener('install', (event) => { // do your operations })
3。激活
self.addEventListener('activate', (event) => { // Do your Operation })
4。空闲
5。获取/消息
self.addEventListener('fetch', (event) => { // Do your Opeation })
6。终止
它将让服务人员保持很长时间。
示例:-
在 chrome 中打开此链接,您将看到许多 Service Worker 挂起,您可以执行很多操作,例如检查/启动和发送消息。
chrome://serviceworker-internals/
即使浏览器关闭,我们如何唤醒服务工作人员。
注意:-
对于这个具体我们可以使用push来唤醒,但是这个使用必须给Browser授予Notification权限,否则没办法。
当浏览器仍然打开时,其他方法也是相关的
1。获取事件
self.addEventListener('fetch', event => { // Handle fetch event });
2。留言
self.addEventListener('message', (event) => { // Handle message Event })
3。推
self.addEventListener('push', (event) => { // Handle Push Event })
4。同步事件
self.addEventListener('sync', (event) => { // handle background Sync Event })
参考
以上是Web Worker 与 Service Worker的详细内容。更多信息请关注PHP中文网其他相关文章!