FetchEvent

Hinweis: Diese Funktion ist nur in Service Workers verfügbar.

Dies ist der Ereignistyp für fetch-Ereignisse, die im Service Worker Global Scope ausgelöst werden. Es enthält Informationen über den Abruf, einschließlich der Anfrage und wie der Empfänger die Antwort behandeln wird. Es stellt die Methode event.respondWith() bereit, die es uns ermöglicht, eine Antwort auf diesen Abruf bereitzustellen.

Event ExtendableEvent FetchEvent

Konstruktor

FetchEvent()

Erstellt ein neues FetchEvent-Objekt. Dieser Konstruktor wird typischerweise nicht verwendet. Der Browser erstellt diese Objekte und stellt sie fetch-Ereignisrückrufen zur Verfügung.

Instanz-Eigenschaften

Erbt Eigenschaften von seinem Vorfahren, Event.

FetchEvent.clientId Schreibgeschützt

Die id des gleichnamigen client, der den Abruf initiiert hat.

FetchEvent.handled Schreibgeschützt

Ein Versprechen, das anhängig ist, während das Ereignis nicht behandelt wurde, und erfüllt wird, sobald es behandelt wurde.

FetchEvent.isReload Schreibgeschützt Veraltet Nicht standardisiert

Gibt true zurück, wenn das Ereignis vom Benutzer ausgelöst wurde, der versucht hat, die Seite neu zu laden, andernfalls false.

FetchEvent.preloadResponse Schreibgeschützt

Ein Promise für eine Response, oder undefined, wenn dieser Abruf keine Navigation ist oder Navigation Preload nicht aktiviert ist.

FetchEvent.replacesClientId Schreibgeschützt

Die id des client, der während einer Seitennavigation ersetzt wird.

FetchEvent.resultingClientId Schreibgeschützt

Die id des client, der den vorherigen Client während einer Seitennavigation ersetzt.

FetchEvent.request Schreibgeschützt

Die Request, die der Browser ausführen möchte.

Instanz-Methoden

Erbt Methoden von seinem Elternteil, ExtendableEvent.

FetchEvent.respondWith()

Verhindert die Standard-Abrufverarbeitung des Browsers und stellt (ein Versprechen für) eine eigene Antwort bereit.

ExtendableEvent.waitUntil()

Verlängert die Lebensdauer des Ereignisses. Wird verwendet, um den Browser über Aufgaben zu informieren, die über die Rückgabe einer Antwort hinausgehen, wie Streaming und Caching.

Beispiele

Dieses fetch-Ereignis verwendet den Standard des Browsers für Nicht-GET-Anfragen. Bei GET-Anfragen versucht es, einen Cache-Treffer zurückzugeben und weicht auf das Netzwerk aus. Wenn es einen Treffer im Cache findet, aktualisiert es den Cache asynchron für das nächste Mal.

js
self.addEventListener("fetch", (event) => {
  // Let the browser do its default thing
  // for non-GET requests.
  if (event.request.method !== "GET") return;

  // Prevent the default, and handle the request ourselves.
  event.respondWith(
    (async () => {
      // Try to get the response from a cache.
      const cache = await caches.open("dynamic-v1");
      const cachedResponse = await cache.match(event.request);

      if (cachedResponse) {
        // If we found a match in the cache, return it, but also
        // update the entry in the cache in the background.
        event.waitUntil(cache.add(event.request));
        return cachedResponse;
      }

      // If we didn't find a match in the cache, use the network.
      return fetch(event.request);
    })(),
  );
});

Spezifikationen

Specification
Service Workers
# fetchevent-interface

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch