Stopping an Angular.$timeout



我尝试停止angular.$timeout。然而,它并没有像预期的那样工作。

签出代码

如果你按下开始键,我希望计时器在0处停止。然而,它一直是负的。然而,如果你按下"停止"按钮,它就会停止。有人能告诉我我做错了什么吗?

代码示例如下:

$scope.countdown = function() {
    stopped = $timeout(function() {
      if($scope.counter == 0) {
        $scope.stop();
      }
       console.log($scope.counter);
     $scope.counter--;   
     $scope.countdown();   
    }, 1000);
  };

$scope.stop = function(){
   $timeout.cancel(stopped);
    } 

非常感谢!

只要在$scope.stop()后面加上return就可以跳出函数,这样定时器就不会重新启动了

$scope.countdown = function() {
    stopped = $timeout(function() {
      console.log($scope.counter);
      if($scope.counter == 0) {
        $scope.stop();
        return; // <-- break out of the function
      }
       console.log($scope.counter);
     $scope.counter--;   
     $scope.countdown();   
    }, 1000);
  };

当计数器达到0时,您开始调用if块中的$scope.stop()。然后执行函数的其余部分,并减少计数器,再次调用countdown(),重新创建一个新的超时。

将函数的其余部分放在else块中,您将拥有您想要的行为。

相关内容

  • 没有找到相关文章

最新更新