--- 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).
FetchEvent
. Este constructor no se usa normalmente. El propio navegador crea estos objetos y los proporciona a los callbacks de eventos "fetch
".Hereda propiedades del ancestro, {{domxref("Event")}}.
Herada métodos del padre, {{domxref("ExtendableEvent")}}.
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é.
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); }()); });
Especificación | Estado | Comentario |
---|---|---|
{{SpecName('Service Workers', '#fetch-event-section', 'FetchEvent')}} | {{Spec2('Service Workers')}} | Definición inicial. |
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.)