angularjs - 如何在AngularJS中删除所有正在运行的$ interval?

标签 angularjs setinterval clearinterval

嗨,我想删除Angular中所有正在运行的$interval。在我的页面中有很多$ interval,然后单击按钮,我要删除所有的interval.i怎么做。

任何帮助表示赞赏。

最佳答案

根据documentation$interval返回一个promise,并且可以使用$interval.cancel(promise)取消间隔。

我看不到任何取消所有间隔的方法,但是如果将返回的promise保留在数组中,则可以对其进行迭代以将其全部取消。

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

如果您的时间间隔分散在不同的 Controller 上,请使用一项服务来跟踪它们。

关于angularjs - 如何在AngularJS中删除所有正在运行的$ interval?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25420311/

相关文章:

javascript - 如何循环遍历 Firebase 集合并为每个集合添加独特的颜色?

javascript - jQuery - setInterval/clearInterval 延迟

javascript - 如何使 AngularJS Materials 下拉菜单更加可见?

angularjs - Angular ui-grid :dropdown with multiple select

javascript - 刷新 Angular 应用程序进入默认状态

javascript - 退出弹出窗口+setInterval

javascript - 如何在 Angular 4 中使用 clearInterval()

javascript - IE 和 setInterval() 不刷新/更新的问题

区间上的 JavaScript 函数不稳定

JavaScript : setInterval in a while?