當我第一次聽到這些術語時,我想,好吧,他們正在用單獨的線程做同樣的事情。那為什麼我們需要這兩個術語?
但說實話,這兩個術語及其行為方式之間存在巨大差異
。會嘗試詳細解釋。
這兩個之間的共同點是
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