我在angularJS中写了一个带延迟的循环,我想连续运行它。这里我尝试了一个包含以下代码的while循环,但由于运行无限时间,它给了我错误,但我的主要目的是连续运行以下代码(如无限循环)
angular.forEach($scope.articles, function (art) {
promise = promise.then(function () {
return $timeout(5000);
});
})
答案 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 。