ExtendableEvent: waitUntil()-Methode
Hinweis: Dieses Feature ist nur verfügbar in Service Workers.
Die ExtendableEvent.waitUntil()
-Methode informiert den Ereignis-Dispatcher darüber, dass Arbeit im Gange ist. Sie kann auch verwendet werden, um festzustellen, ob diese Arbeit erfolgreich war. In Service-Workern teilt waitUntil()
dem Browser mit, dass Arbeit im Gange ist, bis das Promise erfüllt wird, und er sollte den Service-Worker nicht beenden, wenn er möchte, dass diese Arbeit abgeschlossen wird.
Die install
-Ereignisse in Service-Workern verwenden waitUntil()
, um den Service-Worker in der installing
-Phase zu halten, bis die Aufgaben abgeschlossen sind. Wenn das an waitUntil()
übergebene Promise abgelehnt wird, gilt die Installation als fehlgeschlagen und der installierende Service-Worker wird verworfen. Dies wird hauptsächlich verwendet, um sicherzustellen, dass ein Service-Worker nicht als installiert gilt, bis alle Kern-Caches, von denen er abhängt, erfolgreich gefüllt sind.
Die activate
-Ereignisse in Service-Workern verwenden waitUntil()
, um funktionale Ereignisse wie fetch
und push
zu puffern, bis das an waitUntil()
übergebene Promise erfüllt ist. Dies gibt dem Service-Worker Zeit, Datenbankschemata zu aktualisieren und veraltete caches
zu löschen, sodass sich andere Ereignisse auf einen vollständig aktualisierten Zustand verlassen können.
Die waitUntil()
-Methode muss ursprünglich innerhalb des Ereignis-Rückrufs aufgerufen werden, kann aber danach mehrfach aufgerufen werden, bis alle an sie übergebenen Promises erfüllt sind.
Syntax
waitUntil(promise)
Parameter
Rückgabewert
Keiner (undefined
).
Beispiele
Verwendung von waitUntil()
innerhalb eines install
-Ereignisses eines Service-Workers:
addEventListener("install", (event) => {
const preCache = async () => {
const cache = await caches.open("static-v1");
return cache.addAll(["/", "/about/", "/static/styles.css"]);
};
event.waitUntil(preCache());
});
Spezifikationen
Specification |
---|
Service Workers # dom-extendableevent-waituntil |
Browser-Kompatibilität
BCD tables only load in the browser