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

Return Cached response when user is offline using angular js

本文关键字:js 返回 缓存 响应 用户 离线      更新时间:2023-09-26

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

有什么帮助吗?

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

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

如果您希望在

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

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