как приостановить и возобновить таймер при использовании $timeout в angularjs

#javascript #angularjs #timeout

#javascript #angularjs #тайм-аут

Вопрос:

я использовал этот код для таймера паузы:

при использовании $timeout в angularjs как реализовать функциональность приостановки и возобновления

 $scope.pause = function(){
             window.clearTimeout(t);

        }

timedcounter = function () {
       time = time   1;
       localStorage.autotimertime = time;
       t = $timeout(timedcounter, 1000);
       display(time);
}
 

Ответ №1:

В этом фрагменте я показываю время, и кнопка используется для остановки / перезапуска таймаута.

Вы должны добавить свою логику внутри onTimeout функции

 var app = angular.module('myapp', []);
app.controller('myCtrl', function($scope, $timeout) {
  $scope.time = 0;
  $scope.stopped = false;

  $scope.onTimeout = function() {
    $scope.time = $scope.time   1;
    //Your logic here
    //localStorage.autotimertime = time;
    //display(time);
    mytimeout = $timeout($scope.onTimeout, 1000);

  }

  var mytimeout = $timeout($scope.onTimeout, 1000);

  $scope.stopTimeout = function() {
    $scope.stopped = true;
    $timeout.cancel(mytimeout);
  }

  $scope.restatTimeout = function() {
    $scope.stopped = false;
    mytimeout = $timeout($scope.onTimeout, 1000);
  }
}); 
 <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="myapp" ng-controller="myCtrl">
  <p ng-bind="time"></p>
  <button ng-click="stopTimeout()" ng-show="!stopped">STOP ME !</button>
  <button ng-click="restatTimeout()" ng-show="stopped">RESUME ME!</button>
</div> 

Комментарии:

1. @GauravKumar Нет проблем, не забудьте пометить его как ответ

2. @GauravKumar Не забудьте отметить это как ответ для будущих зрителей

Ответ №2:

Чтобы отменить запрос на тайм-аут, вызовите команду $timeout.cancel(обещание).