【发布时间】:2015-11-05 10:01:40
【问题描述】:
我正在做自定义的$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);
});
}
});
系统运行良好。它确实在成功时返回数据,并在连接失败时重试。但是,我面临的问题是连接超时时它将返回控制器。如何防止它返回并继续重试?
【问题讨论】:
-
在您的代码中查找 retry 逻辑并在那里修复它。抱歉,如果没有看到您的代码,无法给您任何其他建议。重试不是
$http功能。 -
@Michael 这是我上面的代码......要使用它,可以通过
myHttp.get($scope.url).success(function(response) {});使用它有什么建议可以让它工作吗? -
@Michael 就在那里.....
return obj.get(path);逻辑有效,即使超时也会重试。问题是当它超时时,它不会等待重试并返回...... -
好吧.. 是的,我正在寻找其他地方。您应该使用
.then(null, errorCallback)而不是error。使用then你可以返回一个promise,但不能使用error。error无论如何都已弃用,不应再使用。 -
@Michael 非常感谢您的帮助。使用您的建议方法,我可以重试。然而,另一个问题出现了。也就是在使用
myHttp.get('url').then(successCallback, errorCallback)时,即使服务返回失败连接,也会返回successCallback而不是errorCallback。我怎样才能到达errorCallback?
标签: javascript angularjs