重新保存并在刷新后重试



我正在处理一个SPA,该SPA通常是在线的,但可以脱机,我必须记录所有对API的请求。当某些请求失败时,我应该稍后重试。

我有一个本地数据库来保存所有请求。当我的应用程序启动时,我会检索所有的并重试标记为的。

我需要的是一种基于我已经发送的内容来配置Restangular对象的方法。我有一个响应拦截器,我正在保存restangular响应对象。

{
  config: {
    headers: Object,
    method: "GET",
    params: Object,
    transformRequest: Array[1],
    transformResponse: Array[1],
    url: "..."
  },
  data: {...},
  headers: {...},
  status: 200,
  statusText: "OK"
}

有没有一个函数可以用给定的配置对象创建Restangular?

感谢

如果我要这样做,我会设置setErrorInterceptor

var yourLocalDb = function($http) {
   var failedRequests = [];
   this.store = function(request) {
      this.failedRequests.push(request);
   }
   this.retry = function() {
     var self = this;
     angular.forEach(this.failedRequests,function(request) {
       $http(request.response.config).then(function() { 
        //in case of success
        self.failedRequests.splice(self.failedRequests.indexOf(request),1);
        request.responseHandler.apply(undefined,arguments);
       }), request.deferred.reject);
     });
   }
} 

Restangular.setErrorInterceptor(function(response, deferred, responseHandler) {
  yourLocalDb.store({
  response : response,
  responseHandler : responseHandler,
  deffered : deffered
  });
}

然后当你有连接时,你可以直接打

yourLocalDb.retry();

没有测试,但它应该会给你线索。

最新更新