【发布时间】:2017-10-01 00:39:35
【问题描述】:
我想知道是否可以有一个 $timeout 在运行后自行取消。通常我看到的是人们说你应该像这样在$destroy 中取消你的$timeout:
var timeout = $timeout(function () {
// stuff
});
$scope.$on("$destroy", function(){
$timeout.cancel(timeout);
});
但是,是否可以改为这样做:
var timeout = $timeout(function () {
// stuff
$timeout.cancel(timeout);
});
【问题讨论】:
-
您建议的“是否可以”代码在它已经运行后尝试取消超时。在这一点上,没有什么可以取消的。在
$destroy事件处理程序中取消的目的是防止在销毁后运行未完成的计划超时。 -
你在做什么没有意义,我认为你正在寻找间隔或类似的东西,那么它可能是有道理的。超时将在给定的秒数内运行您的函数,在该函数内,您的代码就像空行或返回语句一样有效,因为秒数已经过去 - 在您的情况下为 0 秒。
-
感谢@nnnnnn 和pegla。有道理。
标签: javascript angularjs timeout