2017-02-19 66 views
0

我已經在angularJS中編寫了一個帶有延遲的循環,並且我想連續運行它。在這裏,我嘗試了while循環,包括下面的代碼,但由於運行無限長的時間它給了我的錯誤,但我的主要目標是不斷運行下面的代碼(如無限循環)如何讓angularjs循環連續運行而不出錯

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

你想達到什麼樣的?你能解釋手頭的任務嗎? –

+0

我基本上是爲公告牌開發一個用戶界面,我必須在一個分部中顯示通知,一旦顯示所有通知,它應該重新顯示,並且應該連續運行。所以我一直堅持如何在foreach循環完成後繼續運行它。 –

+0

你爲什麼不使用的setInterval(像這樣) '的setInterval(函數(){ 爲(VAR I = 0; I <10;我++){ 的console.log(ⅰ); } },2000); '如果你正在與角度專門工作,你可以使用$間隔 –

回答

-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