我试图在用户停止输入后短暂延迟后调用一个函数,但clearTimeout()
似乎并没有按照我的想法做。以下内容位于 Angular JS 控制器中。
$scope.typing = false;
$scope.delay = undefined;
//Triggered by ng-keydown...
$scope.startTyping = function() {
$scope.typing = true;
console.log('start1', $scope.delay); //6
clearTimeout( $scope.delay );
console.log('start2', $scope.delay); //6... NOT getting cleared!
}
//Triggered by ng-keyup...
$scope.stopTyping = function() {
$scope.typing = false;
$scope.delay = setTimeout( $scope.lookup, 1000);
}
$scope.lookup = function() {
if ($scope.typing === true){
return false;
}
console.log('lookup'); //This fires after every key!
我lookup
在日志中看到每个键,而不是在每次延迟之后。为什么是这样?
更新
记录值后delay
,很明显clearTimeout()
没有重置计时器,而是设置了多个计时器,每个计时器都在触发查找功能。
以供参考...
对于其他人进行故障排除clearTimeout()
,这里有一些类似的问题可能会解决您的问题(但没有解决我的问题):