gpt4 book ai didi

javascript - AngularJS 计时器不会停止

转载 作者:行者123 更新时间:2023-11-28 15:29:45 28 4
gpt4 key购买 nike

我正在运行以下代码,我试图在达到 10 秒时基本上停止计时器

 var mytimeout;
$scope.startTimer = function() {
$scope.counter = 0;
$scope.onTimeout = function() {
$scope.counter++;
$log.info($scope.counter);
if ($scope.counter == 10) {
$scope.stop();
$state.go($state.current.name, {}, {
reload: true
})
}
mytimeout = $timeout($scope.onTimeout, 1000);

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

}

$scope.stop = function(){
$log.info("Stop");
$timeout.cancel(mytimeout);
}

日志如下:

angular.js:10126 1
angular.js:10126 2
angular.js:10126 3
angular.js:10126 4
angular.js:10126 5
angular.js:10126 6
angular.js:10126 7
angular.js:10126 8
angular.js:10126 9
angular.js:10126 10
angular.js:10126 Stop
angular.js:10126 11
angular.js:10126 12
angular.js:10126 13

最佳答案

您的计数器确实正在停止,但是您在 if 语句之后重新分配了 mytimeout ,以便计时器再次启动。我猜测 $state.go() 仍在运行,但计数器在控制台中继续运行。

如果小于 10,则调用计时器,否则调用解析函数。

$scope.startTimer = function() {
$scope.counter = 0;
$scope.onTimeout = function() {
$log.info($scope.counter);

if($scope.counter < 10){
mytimeout = $timeout($scope.onTimeout, 1000)
}else{
$scope.stop();
$state.go($state.current.name, {}, {
reload: true
})
}

$scope.counter++;
}

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

关于javascript - AngularJS 计时器不会停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27822669/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com