ServiceWorker: свойство state
Базовый Широко поддерживается
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с апреля 2018 года.
Безопасный контекст: Эта функция доступна только в безопасных контекстах (HTTPS) в некоторых или всех поддерживающих браузерах.
Примечание: Эта функция доступна в Web Workers.
Чтение-только свойство state интерфейса ServiceWorker возвращает строку, представляющую текущее состояние сервис-воркера. Оно может принимать следующие значения: parsed, installing, installed, activating, activated, или redundant.
Значение
Строка String, которая может принимать одно из следующих значений:
"parsed"-
Начальное состояние сервис-воркера после его загрузки и подтверждения возможности выполнения. Сервис-воркер никогда не обновляется до этого состояния, поэтому это значение никогда не будет результатом события
statechange. "installing"-
Сервис-воркер в этом состоянии рассматривается как устанавливаемый. В этом состоянии,
ExtendableEvent.waitUntil()можно вызвать внутри обработчика событияinstall, чтобы продлить существование устанавливаемого сервис-воркера до успешного разрешения переданного промиса. Это используется в первую очередь для того, чтобы сервис-воркер не стал активным, пока не будут заполнены все основные кеши. "installed"-
Сервис-воркер в этом состоянии рассматривается как ждущий.
"activating"-
Сервис-воркер в этом состоянии рассматривается как активный. В этом состоянии,
ExtendableEvent.waitUntil()можно вызвать внутри обработчика событияonactivate, чтобы продлить существование активного сервис-воркера до успешного разрешения переданного промиса. Никакие функциональные события не генерируются, пока состояние не станет активным. "activated"-
Сервис-воркер в этом состоянии рассматривается как активный и готов обрабатывать функциональные события.
"redundant"-
Новый сервис-воркер заменяет текущий или текущий сервис-воркер отбрасывается из-за ошибки установки.
Примеры
Этот фрагмент кода взят из примера регистрации сервис-воркера (живая демонстрация). Код слушает любые изменения в 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-worker-state |
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
state |
40 | 17 | 44 | 27 | 11.1 | 40 | 44 | 27 | 11.3 | 4.0 | 40 |
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/ServiceWorker/state