2015-11-04 52 views
1

我想做一个自定义$ http服务,将自动重试失败连接。我的代码看起来是这样的:

angular.factory('myHttp', service); 

function service($http){ 
    var obj = {}; 
    obj.get = function(path) { 
     return $http.get(path).then(function(result){ 
      return result; 
     },function(result){ 
       obj.get(path); 
     }); 
    } 
    return obj; 
} 

在使用它,它会正常使用几乎就像使用$http。例如:

myHttp.get($scope.url). 
     then(function(response) { 
     console.log("It's success"); 
     $scope.status = response.status; 
     $scope.data = response.data; 
     }); 

它可以在连接成功时起作用。但是,如果连接失败,它仍然会返回响应而没有数据,控制台日志将显示Error: response is undefined。然后,重试将变得毫无意义。

如何在失败时执行重试连接?

+0

您可以设置故障计数器,您将可以设置计数器,它告诉你,它试图最大尝试 –

回答

0

而是在服务调用失败时,做到这一点,您拨打的服务

function doIt() { 
    myHttp.get($scope.url). 
    then(function (response) { 
     console.log("It's success"); 
     $scope.status = response.status; 
     $scope.data = response.data; 
    }, function() { 
     doIt(); 
    }); 
} 
+0

是否有可能在服务上做?如果你的建议,那为什么我需要我自己的定制服务?我这样做的原因是在我的应用程序中有一些可重用的东西。 – user1995781