2015-04-26 4 views
0

У меня есть этот код внутри функции, которая вызывается каждые 1 или 2 минуты. Он просто отсчитывает от 60 до 0 (я установил 60 как максимальное количество итераций).Как остановить интервал AngularJS?

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

Из того, что я вижу в документации, предполагается, что интервал $ должен быть отменен, но когда я могу это сделать? Я предполагаю, что я не могу просто добавить:

$interval.cancel(timer); 

после этого код.

+0

вы можете. иногда проще пробовать вещи вместо того, чтобы задавать вопрос о stackoverflow :) – mkoryak

+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); 
0

Основываясь на документах, похоже, что это должно работать.

$interval.cancel(timer); 
+0

Но где я могу поместить это в свой код? –

+1

Зависит, когда вы хотите его остановить. –

Смежные вопросы