Angular文档关于$interval说:
$interval
注意:完成此服务后,必须显式销毁此服务创建的间隔。
但这并没有说明如何破坏$ interval。
例如,如果我有一个包含以下代码的指令:
$interval(function() { for (var i in myArray) { // do domething } }, 5000);
例如,当用户更改页面时,如何销毁它?
每当用户更改页面时,与路由控制器关联的范围(/page1在下面的示例中)将被发送一个$destroyevent。你可以cancel说$interval在一个侦听器事件:
/page1
$destroy
cancel
app.config(function ($routeProvider) { $routeProvider.when('/page1', { template: '<div>Page Content</div>', controller: PageController }); // ... }); function PageController($scope, $interval) { var intervalPromise = $interval(function () { /* ... */ }, 5000); $scope.$on('$destroy', function () { $interval.cancel(intervalPromise); }); }