Iteration über array bei forEach-Schleife ist alles erledigt

Ich versuche zu iterieren über ein array, das ich-Konstrukt aus mehreren http-Aufrufe innerhalb eines angular.forEach()

die Funktion

$scope.ticket_stats = function(){
    //cleaning variables
    $scope.data_set = [];
    $scope.closed_tickets = [];

    //fetching time stamps (epoch)
    $scope.time_frame = time_period.days(7);

              //calling data using time stamps
              angular.forEach($scope.time_frame, function(item) {
                  //debug
                  console.log(item);

                  var promise = tickets.status("closed", item);

                  promise.success(function(data){
                      console.log(data);
                      $scope.closed_tickets.push(data[0].datapoints[0][0]); //returns a numerical value
                  });

              });
              //SEE MESSAGE BELOW
              $scope.data_set.push($scope.closed_tickets);

}

die Letzte Zeile $scope.data_set.push() funktioniert, aber Inkrement selbst im Laufe der Zeit einmal fordert Daten zurück. Ich möchte diese Zeile einmal ausgeführt werden soll alles, was innerhalb der for-Each-Schleife ist alles erledigt. Ich brauche zum Durchlaufen der $scope.closed_tickets array afteward zu spielen (neben -) Daten hinein und der Aufbau eines zweiten array.

hier sind die Dienstleistungen, die in dieser Funktion verwendet:

//CALL TICKETS STATS
app.service('tickets', function($http){

    this.status = function(status, date){
        var one_snap = date - 100;
        var url = "/url/render?format=json&target=sum(stats.tickets."+status+")&from="+one_snap+"&until="+date+"";
        return $http.get(url);
    };            
});

//TIME STAMPS MATHS
app.service('time_period', function(){
    var currentDate = parseInt((new Date).getTime()/1000);

    this.days = function(number){
        var pending = [];
        for (var i = number; i > 0; i--) {
            pending.push(currentDate - (87677*i));
        }
        return pending;
    }; 
});

Suche ich nach Informationen und fand heraus, über die $q.all() service aber nicht geschafft, diese Arbeit zu machen, wie ich will.

Irgendwelche Tipps, wäre willkommen!
Danke!

  • werfen Sie einen Blick auf asynchrone Verarbeitung libs wie async.js
  • dies ist vergleichbar mit dem $q-service. Dies ist nur so, dass ich sehe es nicht funktioniert. Eine ausführlichere Antwort wäre willkommen.
  • Nicht wirklich, $q.all wird aufgerufen, wenn alle zusagen sind behoben, aber Sie werden parallel ausgeführt. async konnte dir helfen sequentialize Sie, oder Sie können rufen Sie die nächste, wenn die Vorherige fertig ist mit $q.when
InformationsquelleAutor SKYnine | 2015-04-01
Schreibe einen Kommentar