如何停止AngularJS $间隔?

时间:2015-04-26 03:00:27

标签: angularjs

我将此代码放在一个每1或2分钟调用一次的函数中。它只是从60倒数到0(我将60设置为最大迭代次数)。

var timer = $interval(
   function (times: number) {
      var retry = 60 - times;
      $scope.retryMessage = "retry + " seconds";
   }, 1000, 60);

从我可以看到的文档建议必须取消$ interval,但我什么时候可以这样做?我假设我不能只添加:

$interval.cancel(timer);

这段代码之后。

2 个答案:

答案 0 :(得分:3)

$ interval返回一个承诺。你可以像这样取消它

var times = 60;
var promise = $interval(
   function () {
      var retry = 60 - (times++);
      $scope.retryMessage = retry + " seconds";
      if(retry == 30){ //cancel in 30 seconds instead .. for some reason
          $interval.cancel(promise);
      }
   }, 1000, 60);

答案 1 :(得分:1)

根据文档,它看起来应该可行。

$interval.cancel(timer);