--- title: FetchEvent slug: Web/API/FetchEvent tags: - API - FetchEvent - Interfaz - Offline - Referencia - Service Workers - Workers translation_of: Web/API/FetchEvent ---

{{APIRef("Service Workers API")}}{{ SeeCompatTable() }}

Este es el tipo de evento para eventos "fetch" despachados en el {{domxref("ServiceWorkerGlobalScope", "scope global del service worker", "", 1)}}. Contiene información sobre la búsqueda (fetch), incluyendo la petición (request) y cómo el receptor tratará la respuesta (response).

Provee el método {{domxref("FetchEvent.respondWith", "event.respondWith()")}}, el cúal nos permite proporcionar una respuesta a esta búsqueda (fetch).

Constructor

{{domxref("FetchEvent.FetchEvent()", "new FetchEvent()")}}
Crea un nuevo objecto FetchEvent. Este constructor no se usa normalmente.  El propio navegador crea estos objetos y los proporciona a los callbacks de eventos "fetch".

Propiedades

Hereda propiedades del ancestro, {{domxref("Event")}}.

{{domxref("fetchEvent.clientId")}} {{readonlyInline}}
El {{domxref("Client.id", "id")}} del mismo origen {{domxref("Client", "client")}} que inició el "fetch".
{{domxref("fetchEvent.preloadResponse")}} {{readonlyinline}}
Un {{jsxref("Promise")}} para un {{domxref("Response")}}, o vacío si este no es una navegación, o {{domxref("NavigationPreloadManager", "navigation preload", "", 1)}} no esta habilitado.
{{domxref("fetchEvent.request")}} {{readonlyInline}}
La {{domxref("Request")}} que el navegador intenta crear.

Métodos

Herada métodos del padre, {{domxref("ExtendableEvent")}}.

{{domxref("fetchEvent.respondWith()")}}
Evita el manejo de búsqueda predeterminado del navegador y proporciona (una promesa) una respuesta usted mismo.
{{domxref("extendableEvent.waitUntil()")}}

Extiende el tiempo de vida del evento. Se usa para notificar al navegador las tareas que van más allá de la devolución de una respuesta, como la transmisión y el almacenamiento en caché.

Ejemplos

Este evento fetch, permite al navegador hacer esta acción por defecto para peticiones non-GET. Para peticiones GET  esto intenta retornar una coincidencia en el cache, y  vuelve de nuevo a la red. Si busca una concidencia en el cache, actualiza asincronicamente el cache para la próxima vez.

addEventListener('fetch', event => {
  // Permite al navegador hacer este asunto por defecto
  // para peticiones non-GET.
  if (event.request.method != 'GET') return;

  // Evita el valor predeterminado, y manejar solicitud nosostros mismos.
  event.respondWith(async function() {
    // Intenta obtener la respuesta de el cache.
    const cache = await caches.open('dynamic-v1');
    const cachedResponse = await cache.match(event.request);

    if (cachedResponse) {
      // Si encontramos una coincidencia en el cache, lo devuelve, pero también
      // actualizar la entrada en el cache en segundo plano.
      event.waitUntil(cache.add(event.request));
      return cachedResponse;
    }

    // Si no encontramos una coincidencia en el cache, usa la red.
    return fetch(event.request);
  }());
});

Especificaciones

Especificación Estado Comentario
{{SpecName('Service Workers', '#fetch-event-section', 'FetchEvent')}} {{Spec2('Service Workers')}} Definición inicial.

Compatibilidad de Navegadores

{{CompatibilityTable}}
Característica Chrome Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Soporte Básico {{CompatChrome(40)}} {{ CompatGeckoDesktop("44.0") }}[1] {{CompatNo}} 24 {{CompatNo}}
Propiedad preloadResponse  {{CompatChrome(59)}} {{CompatUnknown}} {{CompatUnknown}} {{CompatOpera(46)}} {{CompatUnknown}}
Característica Android Webview Chrome for Android Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile
Soporte Básico {{CompatChrome(40)}} {{CompatChrome(40)}} {{ CompatGeckoMobile("44.0") }} {{ CompatVersionUnknown }} {{CompatNo}} {{CompatUnknown}} {{CompatNo}}
Propiedad preloadResponse  {{CompatChrome(59)}} {{CompatChrome(59)}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatOperaMobile(46)}} {{CompatUnknown}}

[1] Service workers (and Push) have been disabled in the Firefox 45 and 52 Extended Support Releases (ESR.)

Ver también