2016-04-05 3 views
0

Я хочу использовать задержку в моей петле angular.foreach. У меня есть список, и я хочу отображать их один за другим с периодами в 2 секунды.AngularJS foreach delay loop

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

Что мне делать?

+0

Какова структура 'vm.SimulationResult'? –

+0

Может быть стоит прочитать: http://stackoverflow.com/questions/3583724/how-do-i-add-a-delay-in-a-javascript-loop –

+0

это важно? Это список с примитивными типами. @SiddharthAjmera – Egomen

ответ

3

Воспользуйся тем, что $ таймаут возвращает обещание и цепь Обещание вместе с тем, что каждый из них начинается другое обещание тайм-аут, который будет толкать следующее предупреждение:

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

(убедитесь, что ваша версия Угловым является обновленный, поскольку более старые версии не позволяли вам опустить функцию обратного вызова в таймаут)

+0

Это не работало, есть ли другое решение? – Egomen

+0

Работал для меня (AngularJS 1.5.8) – iiminov

+0

Работал и для меня –