当我第一次听到这些术语时,我想,好吧,他们正在用单独的线程做同样的事情。那么为什么我们需要这两个术语?
但说实话,这两个术语及其行为方式之间存在巨大差异
。会尝试详细解释。
这两个之间的共同点是
Web Worker
服务人员
Service Worker 的生命周期
1。登记
if ('serviceWorker' in navigator) { // wrap it in try/catch / promisses await navigator.serviceWorker.register('/service-worker.js') }if(导航器中的“serviceWorker”){ // 将其包装在 try/catch/promises 中 等待 navigator.serviceWorker.register('/service-worker.js') }
2.安装
下面的代码我们需要写在service-worker.js
if ('serviceWorker' in navigator) { // wrap it in try/catch / promisses await navigator.serviceWorker.register('/service-worker.js') }self.addEventListener('安装', (事件) => { // 进行你的操作 })
3.激活
if ('serviceWorker' in navigator) { // wrap it in try/catch / promisses await navigator.serviceWorker.register('/service-worker.js') }self.addEventListener('激活', (事件) => { // 执行你的操作 })
4。闲置的
5。获取/消息
if ('serviceWorker' in navigator) { // wrap it in try/catch / promisses await navigator.serviceWorker.register('/service-worker.js') }self.addEventListener('fetch', (event) => { // 执行你的操作 })
6。终止
它将让服务人员保留很长时间。
例子:-
在 chrome 中打开此链接,您将看到许多服务工作人员挂起,您可以执行很多操作,例如检查/启动和发送消息。
if ('serviceWorker' in navigator) { // wrap it in try/catch / promisses await navigator.serviceWorker.register('/service-worker.js') }chrome://serviceworker-internals/
即使浏览器关闭,我们如何唤醒服务人员。
笔记:-
当浏览器仍然打开时,其他方法也是相关的
1。获取事件
if ('serviceWorker' in navigator) { // wrap it in try/catch / promisses await navigator.serviceWorker.register('/service-worker.js') }self.addEventListener('fetch', event => { // 处理获取事件 });
2.信息
if ('serviceWorker' in navigator) { // wrap it in try/catch / promisses await navigator.serviceWorker.register('/service-worker.js') }self.addEventListener('消息', (事件) => { // 处理消息事件 })
3.推
if ('serviceWorker' in navigator) { // wrap it in try/catch / promisses await navigator.serviceWorker.register('/service-worker.js') }self.addEventListener('push', (event) => { // 处理推送事件 })
4。同步事件
if ('serviceWorker' in navigator) { // wrap it in try/catch / promisses await navigator.serviceWorker.register('/service-worker.js') }self.addEventListener('同步', (事件) => { // 处理后台同步事件 })
参考
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3