ServiceWorker.state
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since April 2018.
La propriété en lecture seule state
, rattachée à l'interface ServiceWorker
, renvoie une chaîne de caractères indiquant l'état courant du service worker. Sa valeur peut être :
"installing"
,"installed"
,"activating"
,"activated"
,- ou
"redundant"
.
Valeur
Une chaîne de caractères (String
) qui peut valoir :
"installing"
-
Le service worker est en cours d'installation. Pendant cet état,
ExtendableEvent.waitUntil()
peut être appelé au sein du gestionnaire d'évènementinstall
pour étendre la durée de vie du worker en installation jusqu'à ce que la promesse passée soit réussie. Cet état sert principalement à s'assurer que le service worker n'est pas actif tant que tous les caches n'ont pas été remplis. "installed"
-
Dans cet état, le service worker est en attente.
"activating"
-
Dans cet état, le service worker est considéré comme actif. Pendant cet état, on peut appeler
ExtendableEvent.waitUntil()
dans le gestionnaire d'évènementsonactivate
afin d'étendre la durée de vie du worker jusqu'à ce que la promesse passée soit réussie. Aucun évènement fonctionnel n'est diffusé tant que l'état n'est pas"activated"
. "activated"
-
Dans cet état, le service worker est considéré comme actif et comme pouvant gérer les évènements fonctionnels.
"redundant"
-
Un nouveau service worker qui remplace le service worker courant, ou le service worker courant qui est écarté en raison d'un échec d'installation.
Exemples
Le fragment de code qui suit est tiré de l'exemple registration-events
(voir la démo correspondante). Le code surveille tout changement de ServiceWorker.state
et renvoie la valeur.
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", function (e) {
logState(e.target.state);
});
}
Spécifications
Specification |
---|
Service Workers # service-worker-state |
Compatibilité des navigateurs
BCD tables only load in the browser