【问题标题】:Return Cached response when user is offline using angular js当用户使用 Angular js 离线时返回缓存响应
【发布时间】:2016-07-04 02:14:03
【问题描述】:

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

有什么帮助吗?

【问题讨论】:

  • 错误函数是否被执行?你不会从你的 localStorage 中读取数据吗?除此之外,即使用户离线,您也必须确保 Web 应用程序运行。我想你已经处理好了。

标签: javascript angularjs offline-caching


【解决方案1】:

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

您可以添加interceptor 来更改处理$http 呼叫的方式。在这里,您可以检查用户是否离线并以不同的方式处理。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 感谢@Austin,我已将 cache:true 添加到我的请求中。但是如果网络不可用,我如何强制 http.get 返回缓存的响应?
    猜你喜欢
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 2017-04-25
    • 1970-01-01
    • 2022-11-30
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    相关资源
    最近更新 更多