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 |
浏览器兼容性
加载中…