J'utilise un technicien de maintenance pour travailler hors connexion. Donc, pour chaque requête d'extraction, je le stocke dans le cache.Travailleur de service Récupération
Maintenant, Je voudrais que le technicien de service fasse une demande, et le stocker aussi pour la prochaine fois. le problème est lorsque j'utilise fetch(myUrl).then...
, le Fetch Listener self.addEventListener('fetch', function(e)...
dans le travailleur de service ne l'attrape pas.
Je ne voudrais pas dupliquer le code .. des idées?
La récupération de l'auditeur est:
self.addEventListener ('récupérer', function (e) {
// e.respondWidth Responds to the fetch event
e.respondWith(
// Check in cache for the request being made
caches.match(e.request)
.then(function(response) {
// If the request is in the cache
if (response) {
console.log("[ServiceWorker] Found in Cache", e.request.url, response);
// Return the cached version
return response;
}
// If the request is NOT in the cache, fetch and cache
var requestClone = e.request.clone();
return fetch(requestClone)
.then(function(response) {
if (!response) {
console.log("[ServiceWorker] No response from fetch ")
return response;
}
var responseClone = response.clone();
// Open the cache
caches.open(cacheName).then(function(cache) {
// Put the fetched response in the cache
cache.put(e.request, responseClone);
console.log('[ServiceWorker] New Data Cached', e.request.url);
// Return the response
return response;
}); // end caches.open
// returns the fresh response (not cached..)
return response;
})
.catch(function(err) {
console.log('[ServiceWorker] Error Fetching & Caching New Data', err);
});
}) // end caches.match(e.request)
.catch(function(e){
// this is - if we still dont have this in the cache !!!
console.log("[ServiceWorker] ERROR WITH THIS MATCH !!!",e, arguments)
})// enf of caches.match
); // end e.respondWith
});
êtes-vous que votre agent de service est enregistré à tous? –