2015-11-04 51 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