ServiceWorker:state 屬性
注意:此功能在 Web Workers 中可用。
ServiceWorker 介面的只讀屬性 state 返回一個字串,表示 service worker 的當前狀態。它可以是以下值之一:parsed、installing、installed、activating、activated 或 redundant。
值
一個 String,可以取以下值之一
"parsed"-
service worker 下載並確認可執行後的初始狀態。service worker 永遠不會更新到此狀態,因此它永遠不會是
statechange事件的值。 "installing"-
此狀態下的 service worker 被視為正在安裝的 worker。在此狀態下,可以在
install事件處理程式內部呼叫ExtendableEvent.waitUntil()來延長正在安裝的 worker 的生命週期,直到傳入的 Promise 成功解析。這主要用於確保 service worker 在所有核心快取填充完畢之前不會處於活動狀態。 "installed"-
此狀態下的 service worker 被視為一個等待中的 worker。
"activating"-
此狀態下的 service worker 被視為一個活動的 worker。在此狀態下,可以在
onactivate事件處理程式內部呼叫ExtendableEvent.waitUntil()來延長活動的 worker 的生命週期,直到傳入的 Promise 成功解析。在狀態變為activated之前,不會分派任何功能性事件。 "activated"-
此狀態下的 service worker 被視為一個已準備好處理功能性事件的活動 worker。
"redundant"-
一個新的 service worker 正在替換當前的 service worker,或者當前的 service worker 由於安裝失敗而被丟棄。
示例
此程式碼片段來自 service worker registration-events 示例(線上演示)。該程式碼監聽 ServiceWorker.state 的任何變化並返回其值。
let serviceWorker;
if (registration.installing) {
serviceWorker = registration.installing;
document.querySelector("#kind").textContent = "installing";
} else if (registration.waiting) {
serviceWorker = registration.waiting;
document.querySelector("#kind").textContent = "waiting";
} else if (registration.active) {
serviceWorker = registration.active;
document.querySelector("#kind").textContent = "active";
}
if (serviceWorker) {
logState(serviceWorker.state);
serviceWorker.addEventListener("statechange", (e) => {
logState(e.target.state);
});
}
規範
| 規範 |
|---|
| Service Workers # service-worker-state |
瀏覽器相容性
載入中…