2017-02-19 2 views
0

Я написал цикл в angularJS с задержкой, и я хочу запускать его непрерывно. Здесь я попробовал время цикла, включая следующий код, но из-за работы бесконечное время он дал мне ошибку, но моя главная цель состоит в том, чтобы запустить следующий код непрерывно (например, бесконечный цикл)Как сделать цикл angularjs непрерывным без ошибок

angular.forEach($scope.articles, function (art) { 
    promise = promise.then(function() { 
    return $timeout(5000); 
    }); 
}) 
+1

что вы хотите достичь? Можете ли вы объяснить эту задачу? –

+0

Я в основном разрабатываю пользовательский интерфейс для доски объявлений, где я должен отображать уведомления в одном подразделении с задержкой, и как только все уведомления отображаются, он должен перезапустить его отображение, и это должно продолжаться непрерывно. Поэтому я застрял в том, как запускать его непрерывно, когда цикл foreach завершается. –

+0

Почему бы вам не использовать setInterval (что-то вроде этого) 'setInterval (функция() { для (вар я = 0; я <10; я ++) { console.log (я); } }, 2000); 'Если вы работаете специально с угловым, вы можете использовать $ interval –

ответ

-2

Я думаю, что это очень сильный антипаттерн. Вам, вероятно, лучше смотреть в слушателей, например $on, $watch и тому подобное.

Или, если необходимо, в дебафферов.

+0

, чтобы послушать что? Ответ на самом деле не имеет смысла без дополнительного контекста. – charlietfl

+0

спросите, и вы получите – irbanana

1

Вы не должны использовать $timeout, в вашем случае вам нужно $interval

$interval(function(){ 
    for(var i=0; i < 5;i++){ 
     console.log("I am a Bear"); 
    } 
}, 5000); 

В angularJS вы должны использовать $interval вместо setInterval(), потому что вы могли бы иметь проблемы с привязки данных двухсторонние.
Даже полезно уничтожить интервал $.

ПОЛНЫЙ ПРИМЕР:

angular.module('myApp',[]) 
     .controller('myCtrl', myCtrl); 

myCtrl.$inject = ['$scope', '$interval']; 
function myCtrl($scope, $interval) { 
    var myInterval = $interval(function(){ 
     for(var i=0; i < 5;i++){ 
     console.log("I am a Bear"); 
     } 
    }, 5000); 

    $scope.$on('$destroy', function() { 
     $interval.cancel(myInterval); 
    }); 
} 

Проверить угловой $interval docs

Смежные вопросы