是否可以自动取消$ timeout?

时间:2017-10-01 00:39:36

标签: javascript angularjs timeout

我想知道是否可以让$timeout在运行后自行取消。通常我看到的是人们说你应该取消$timeout$destroy这样的var timeout = $timeout(function () { // stuff }); $scope.$on("$destroy", function(){ $timeout.cancel(timeout); });

var timeout = $timeout(function () {
    // stuff
    $timeout.cancel(timeout);
});

但是,这样做是否可以:

{{1}}

1 个答案:

答案 0 :(得分:0)

从页面中删除DOM元素时, AngularJS将触发$ destroy事件 范围。这让我们有机会取消任何 我们可能有的待定计时器。

$ timeout()返回一个promise对象。可以将此对象提供给$ timeout.cancel()函数以取消超时。

$scope.$on('$destroy', function(){
    $timeout.cancel(promise);
});