我正在做自定义 $http
服务,看起来像这样:
angular.factory('myHttp', function($http){
var obj = {};
obj.get = function(path) {
return $http.get(path,{timeout: 5000}).error(function (result) {
console.log("retrying");
return obj.get(path);
});
}
});
系统运行良好。成功时返回数据,连接失败时重试。但是,我面临的问题是当连接超时时它会返回到 Controller 。如何防止它返回并继续重试?
最佳答案
您需要使用$q.reject
。这将表明错误处理程序再次失败,结果应填充到父错误处理程序 - 而不是成功处理程序。
obj.get = function(path) {
return $http.get(path, {
timeout: 5000
}).then(null, function(result) {
console.log("retrying");
if (i < retry) {
i += 1;
return obj.get(path);
} else {
return $q.reject(result); // <-- use $q.reject
}
});
}
参见plunker
关于javascript - 防止 AngularJS $http 在超时时返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33541584/