2016-04-05 6 views
0

Ich möchte Verzögerung in meiner angular.foreach Schleife verwenden. Ich habe eine Liste und möchte sie einzeln mit 2 Sekunden Perioden anzeigen.AngularJS foreach Verzögerungsschleife

angular.forEach(vm.SimulationResult, function (value, key) { 
        timeout2 = $timeout(function() { 
         vm.Alerts.push({ msg: value.MainStatus }); 
        }, 2000); 
       }); 

was soll ich tun?

+0

Wie ist die Struktur von 'vm.SimulationResult'? –

+0

Vielleicht lesenswert: http://stackoverflow.com/questions/3583724/how-do-i-add-a-delay-in-a-javascript-loop –

+0

ist das wichtig? Es ist eine Liste mit primitiven Typen. @SiddharthAjmera – Egomen

Antwort

3

Nutzen Sie die Tatsache, dass $ timeout ein Versprechen und Kette kehrt zusammen die Versprechungen, so dass jeder eine andere Versprechen Timeout beginnt, die die nächste Alarm drücken wird:

let promise = $timeout(); 
angular.forEach(vm.SimulationResult, function(value, key) { 
    promise = promise.then(function() { 
     vm.Alerts.push({ msg: value.MainStatus }); 
     return $timeout(2000); 
    }); 
}); 

(stellen Sie sicher, Ihre Version von eckig up-to-date, da ältere Versionen die Callback-Funktion nicht innerhalb eines Timeouts auslassen konnten)

+0

Es hat nicht funktioniert, gibt es eine andere Lösung? – Egomen

+0

Arbeitete für mich (AngularJS 1.5.8) – iiminov

+0

Arbeitete auch für mich –