当用户使用角度js离线时返回缓存响应

时间:2016-03-17 15:48:50

标签: javascript angularjs offline-caching

我正在尝试为我的网络应用实现离线功能,其中$ 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;
                    }
                  }

有任何帮助吗?

2 个答案:

答案 0 :(得分:0)

缓存是$ http服务的内置功能。您无需实施自己的解决方案。请参阅文档的缓存部分:

https://docs.angularjs.org/api/ng/service/ $ HTTP

答案 1 :(得分:0)

如果您希望在离线时处理API调用,即使用户尚未在此浏览器会话中进行过那么精确的调用,那么内置的angualr缓存也是不够的。

您可以添加interceptor来更改$http来电的处理方式。在这里,您可以检查用户是否处于脱机状态并以不同方式处理。