2016-09-04 5 views
0

Ich habe ein ernstes Problem in diesem Fall. Ich bekomme Daten von Github API durch diesen Code unten, aber da Github alllow nur 30 Ergebnisse pro Seite Ich möchte alle Daten für bessere Sortieroptionen holen und schieben Sie es auf ein Array von Objekten. Unten finden Sie einen Code dies funktioniert guteckig Daten von mehreren http-Aufrufe verwalten

$scope.getData = function() { 
     $http({ 
      method: "GET", 
      url: api url + pageNum 
     }).then(function mySucces(response) { 
      $scope.mydata = response.data; 
      $scope.isLoading = false; 
      $scope.result = $scope.mydata.map(function (a) { return { 'name': a.name, 'html_url': a.html_url }; }); 

     }, function myError(response) { 
      $scope.error = response.statusText; 

     }); 
    }; 

Aber ich mag so etwas wie diese

$scope.getData = function() { 
for(var i =0; i<= $scope.pages.length; i++){ 
     $http({ 
      method: "GET", 
      url: "apiUrl + i 
     }).then(function mySucces(response) { 
      $scope.mydata = response.data; 
      $scope.isLoading = false; 
      $scope.result = $scope.mydata.map(function (a) { return { 'name': a.name, 'html_url': a.html_url }; }); 

     }, function myError(response) { 
      $scope.error = response.statusText; 

     }); 
    }; 

tun Irgendwelche Ideen hw zu tun?

+0

Ich habe etwas ähnliches bei der Arbeit mit einem $ q.all(), um alle Versprechen zu lösen. Leider kann ich jetzt weder auf die Repos zugreifen, noch habe ich das nötige Setup zu Hause, um ein Beispiel zu versuchen. Versuchen Sie, in diese Richtung zu schauen. –

Antwort

0

Sie sollten die $q documentation in the AngularJS site überprüfen.

$scope.getData = function() { 
    $scope.result = []; 
    $scope.error = []; 
    $q.all($scope.pages.map(function(page) { 
     return $http({ 
      method: "GET", 
      url: "apiUrl" + i 
     }) 
     // This function will be triggered when each call is finished. 
     .then(function mySucces(response) { 
      $scope.mydata.push(response.data); 
      $scope.result.push($scope.mydata.map(function (a) { return { 'name': a.name, 'html_url': a.html_url }; })); 

     }) 
    })) 
    // This call will be called when all of the calls are finished. 
    .then(function(success) { 
     $scope.isLoading = false; 
    }).catch(function (error) { 
     $scope.error = response.statusText; 
    }); 
} 
+0

Danke, ich werde es überprüfen. Ich lasse es dich wissen – TrzasQ

Verwandte Themen