我正在尝试为我的网络应用实现离线功能,其中$ http.get请求会在用户离线时返回本地存储的缓存响应/提取。
在我的服务中,我有
service.getRequest = function(){
if(!navigator.onLine){
//return cached response or localStorage[JSON.parse(url)]
}
else {
var deferred = $q.defer();
$http.get(url, {cache : true})
.success(function(data) {
localStorage[url] = JSON.stringify(data);
deferred.resolve(data);
})
.error(function() {
deferred.reject('Unable to get request');
});
return deferred.promise;
}
}
有任何帮助吗?
答案 0 :(得分:0)
缓存是$ http服务的内置功能。您无需实施自己的解决方案。请参阅文档的缓存部分:
答案 1 :(得分:0)
如果您希望在离线时处理API调用,即使用户尚未在此浏览器会话中进行过那么精确的调用,那么内置的angualr缓存也是不够的。
您可以添加interceptor来更改$http
来电的处理方式。在这里,您可以检查用户是否处于脱机状态并以不同方式处理。