如何使angularjs循环连续运行而不会出错

时间:2017-02-19 17:31:48

标签: javascript angularjs

我在angularJS中写了一个带延迟的循环,我想连续运行它。这里我尝试了一个包含以下代码的while循环,但由于运行无限时间,它给了我错误,但我的主要目的是连续运行以下代码(如无限循环)

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

2 个答案:

答案 0 :(得分:2)

您不必使用$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

答案 1 :(得分:-2)

我认为这是非常强大的反模式。您可能最好不要查看听众,例如$on$watch等。

或者如果你必须,进入 debouncers