Angularjs 刷新后重新启动保存并重试
我正在做一个SPA,它通常是在线的,但可以离线,我必须记录对API的所有请求。当某些请求失败时,我应该稍后重试 我有一个本地数据库来保存所有请求。当我的应用程序启动时,我将检索所有应用程序并重试标记为的应用程序 我需要的是一种基于我已经发送的内容配置Restangular对象的方法。我有一个响应拦截器,我正在保存restangular响应对象Angularjs 刷新后重新启动保存并重试,angularjs,restangular,Angularjs,Restangular,我正在做一个SPA,它通常是在线的,但可以离线,我必须记录对API的所有请求。当某些请求失败时,我应该稍后重试 我有一个本地数据库来保存所有请求。当我的应用程序启动时,我将检索所有应用程序并重试标记为的应用程序 我需要的是一种基于我已经发送的内容配置Restangular对象的方法。我有一个响应拦截器,我正在保存restangular响应对象 { config: { headers: Object, method: "GET", params: Object,
{
config: {
headers: Object,
method: "GET",
params: Object,
transformRequest: Array[1],
transformResponse: Array[1],
url: "..."
},
data: {...},
headers: {...},
status: 200,
statusText: "OK"
}
是否有一个函数可以使用给定的配置对象创建重新启动语言
谢谢如果我要这样做,我会设置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();
没有测试,但它应该会给你线索。谢谢你的回答。我不能再测试它了,因为几个月前我退出了这个项目,但在此之前我做了类似的事情