Im cercando per scorrere un array che costruisco da chiamate http multipli all'interno di un angular.forEach()
iterare matrice quando forEach loop è tutto fatto
la funzione
$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);
}
l'ultima riga $scope.data_set.push()
funziona ma incremento se stesso nel tempo una volta chiama i dati di ritorno. Vorrei che questa riga fosse eseguita una volta terminato tutto all'interno di per ogni ciclo. Ho bisogno di scorrere l'array $scope.closed_tickets
per riprodurre (aggiungere) i dati al suo interno e creare un secondo array.
qui sono i servizi utilizzati in questa funzione:
// 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;
};
});
ho la ricerca di informazioni e scoperto circa il servizio $q.all()
, ma non sono riuscito a fare questo lavoro nel modo desiderato.
Qualsiasi consiglio sarebbe gradito! Grazie!
avere uno sguardo a librerie di elaborazione asincrona come 'async.js' – floribon
questo è simile ad usare il servizio di $ q. Questo è solo che non lo vedo funzionare. Una risposta più dettagliata sarebbe gradita. – SKYnine
Non proprio, '$ q.all' sarà invocato quando tutte le promesse saranno risolte, ma saranno eseguite in parallelo. 'async' potrebbe aiutarti a sequenziarli, oppure puoi chiamare quello successivo una volta che il precedente ha terminato di usare' $ q.quando' – floribon