gpt4 book ai didi

javascript - Angular $interval 在超过 'count' 参数后是否会自行取消?

转载 作者:行者123 更新时间:2023-11-28 00:05:40 32 4
gpt4 key购买 nike

关于 Angular 中 $interval 服务的快速问题。查看文档( $interval ),他们警告您手动取消间隔,但您可以选择在初始化时提供计数参数。一旦计时器“滴答作响”超过了分配的计数,它会自行取消还是只是停止调用该函数并在后台继续运行?

最佳答案

TL;DR;计数结束后,间隔清零。

正如同一文档所述,建议您在 Controller 的范围被破坏时取消 $interval。像这样的东西:

var t = $interval(function(){
...
}, 1000);


$scope.$on('$destroy', function(){
$interval.cancel(t);
});

delay参数是调用函数的时间间隔。在上面的示例中,该函数每 1000 毫秒调用一次。如果您不取消 $interval,Angular 将保留对它的引用,并可能继续执行您的函数,从而导致您的应用出现奇怪的行为。

考虑到 $interval 提供程序只是原生 setInterval() 的包装,加上 $apply,查看 Angular 实现 ( https://github.com/angular/angular.js/blob/master/src/ng/interval.js ),我们可以找到以下代码片段:

if (count > 0 && iteration >= count) {
deferred.resolve(iteration);
clearInterval(promise.$$intervalId);
delete intervals[promise.$$intervalId];
}

因此,由提供者创建的 Promise 已解决,并且间隔已清除。取消方法执行以下操作:

intervals[promise.$$intervalId].reject('canceled');
$window.clearInterval(promise.$$intervalId);
delete intervals[promise.$$intervalId];

所以,我认为你的假设是正确的。计数结束后,间隔已清零。

关于javascript - Angular $interval 在超过 'count' 参数后是否会自行取消?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31363430/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com