停止 Angular.$timeout
Stopping an Angular.$timeout
我尝试停止 angular.$超时。
但是,它没有按预期工作。
检查 this codepen 以获得代码
如果你按下开始键,我希望计时器会停在 0。然而,它一直在倒数。
但是,如果您按下 "stop" 按钮,它就会停止。谁能告诉我我做错了什么?
下面的代码示例:
$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
块中,您将获得所需的行为。
我尝试停止 angular.$超时。 但是,它没有按预期工作。
检查 this codepen 以获得代码
如果你按下开始键,我希望计时器会停在 0。然而,它一直在倒数。 但是,如果您按下 "stop" 按钮,它就会停止。谁能告诉我我做错了什么?
下面的代码示例:
$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
块中,您将获得所需的行为。