您好我想删除Angular中所有正在运行的$interval
。在我的页面有很多$ interval和按钮点击我想删除所有间隔。我怎么做。
感谢任何帮助。
答案 0 :(得分:12)
根据documentation $interval
返回一个承诺,可以使用$interval.cancel(promise)
取消间隔。
我无法看到取消所有间隔的任何方法,但是如果你将返回的promises保存在一个数组中,你可以迭代它以取消它们。
var intervals = []
intervals.push($interval(function() { /*doStuff*/ }, /*timeout*/));
intervals.push($interval(function() { /*doDifferentStuff*/ }, /*timeout*/));
...
angular.forEach(intervals, function(interval) {
$interval.cancel(interval);
});
intervals.length = 0; //clear the array
如果您的间隔分布在不同的控制器上,请使用服务来跟踪它们。
答案 1 :(得分:5)
更高效的方法:
var intervals = [];
intervals.push($interval(function() { /*doStuff*/ }, /*timeout*/));
intervals.push($interval(function() { /*doDifferentStuff*/ }, /*timeout*/));
//doing some stuff
while(intervals.length){
$interval.cancel(intervals.pop());
}