2016-05-12 13 views
1

Ich habe unten Code für die Überprüfung geschrieben, ob eine bestimmte URL bereits im Service-Worker-Cache ist oder nicht? Aber selbst wenn die URL nicht im Cache vorhanden ist, gibt sie/consoles "Found in cache" zurück.Prüfen, ob URL im Service-Arbeiter-Cache vorhanden ist

var isExistInCache = function(request){ 
    return caches.open(this.cacheName).then(function(cache) { 
     return cache.match(request).then(function(response){ 
      debug_("Found in cache "+response,debug); 
      return true; 
     },function(err){ 
      debug_("Not found in cache "+response,debug); 
      return false; 
     }); 
     }) 
} 

oben Funktion aufrufen als

cache.isExistInCache('http://localhost:8080/myroom.css').then(function(isExist){ 
     console.log(isExist); 
    }) 

Antwort

3

Aus der Dokumentation der Cache.match Funktion wird das Versprechen immer gelöst. Es wird mit einem Response Objekt oder mit undefined aufgelöst, wenn keine Übereinstimmung gefunden wird.

Deshalb haben Sie Ihre Funktion wie folgt zu ändern:

return caches.open(this.cacheName) 
.then(function(cache) { 
    return cache.match(request) 
    .then(function(response) { 
    return !!response; // or `return response ? true : false`, or similar. 
    }); 
}); 
Verwandte Themen