【问题标题】:how to pause and resume the timer when using $timeout in angularjs在angularjs中使用$timeout时如何暂停和恢复计时器
【发布时间】:2016-10-14 06:25:16
【问题描述】:

我将此代码用于暂停计时器:

在angularjs中使用$timeout时如何实现暂停和恢复功能

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

        }

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

【问题讨论】:

    标签: javascript angularjs timeout


    【解决方案1】:

    在这个 sn-p 中,我显示了时间,并使用了一个按钮来停止/重新启动超时。

    您应该在 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>

    【讨论】:

    • @GauravKumar 没问题,别忘了标记为答案
    • @GauravKumar 不要忘记将其标记为未来观众的答案
    【解决方案2】:

    要取消超时请求,请调用 $timeout.cancel(promise)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-06
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 2017-04-11
      • 1970-01-01
      相关资源
      最近更新 更多