我在下面编写了代码,用于检查特定URL是否已经在服务工作缓存中?但即使缓存中没有URL,它也会返回/发送“在缓存中找到”。
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;
});
})
}
将上述功能调用为
cache.isExistInCache('http://localhost:8080/myroom.css').then(function(isExist){
console.log(isExist);
})
答案 0 :(得分:4)
从Cache.match函数的文档中,承诺始终得到解决。如果没有找到匹配,则使用Response对象或未定义对象解析。
因此,你必须像这样修改你的功能:
return caches.open(this.cacheName)
.then(function(cache) {
return cache.match(request)
.then(function(response) {
return !!response; // or `return response ? true : false`, or similar.
});
});