Für den ersten Besuch beschreiben Sie, die Registrierung ist noch nicht active
, wenn das Versprechen löst, aber es ist "Installation", so die Registrierung installing
Eigenschaft wird einen Service-Arbeiter zurückgeben.
Da sich kein Service Worker im Status waiting
befindet, wird er dann in activating
und dann in active
umgewandelt. Sie haben also Recht, in dieser Registrierung Eigenschaft ist zunächst nicht active
, aber auf aktualisieren, wird es sein. wie Sie beobachtet
installing ServiceWorker {scriptURL: "http://...", state: "installing", onstatechange: null, onerror: null}
statechange initial state installing changed to installed
statechange initial state installing changed to activating
statechange initial state installing changed to activated
Die Zustandsänderungen geschehen asynchron
:
wird der folgende Code veranschaulichen:
navigator.serviceWorker.register('/serviceworker.js').then(onRegistration);
function onRegistration(registration) {
if (registration.waiting) {
console.log('waiting', registration.waiting);
registration.waiting.addEventListener('statechange', onStateChange('waiting'));
}
if (registration.installing) {
console.log('installing', registration.installing);
registration.installing.addEventListener('statechange', onStateChange('installing'));
}
if (registration.active) {
console.log('active', registration.active);
registration.active.addEventListener('statechange', onStateChange('active'));
}
}
function onStateChange(from) {
return function(e) {
console.log('statechange', from, 'to', e.target.state);
}
}
Beim ersten Besuch der console.log
ausgegeben werden würde.