【发布时间】:2013-12-19 11:44:23
【问题描述】:
我有以下带有 setTimeout 函数的 jquery 代码将变量设置为 false,但它永远不会起作用,并且变量始终保持为 true
for( var ff = 0; ; ff++)
{
if( dif == 0){
break;
}
if (locked){
// locked = false;
setTimeout( function(){ locked = false; },2000);
}
else{
LeftKeyPressed();
locked = true ;
setTimeout( function(){ locked = false; },3000);
dif--;
}
}
任何人都可以帮助在将锁定变量设置为 true 两秒钟后将其设置为 false。
【问题讨论】:
-
提供一个 jsfiddle 来复制您的问题。什么是差异?你怎么称呼这个sn-p?顺便说一句,这个语法是错误的:
dfd.done(LeftKeyPressed());应该是:dfd.done(LeftKeyPressed);或者它可能是对的,但是你不知道这个函数的代码 -
使用无限循环来响应变量值的变化通常是个坏主意。至少有一个每隔 50 毫秒左右检查一次值的间隔,或者如果您在需要的地方显示更大的上下文,我很确定有更好的方法来实现实际目标。
-
不要在 javascript 中执行像 "for(var ff = 0; ; ff++)" 这样的无限循环,这会使您的网站无响应,可能会阻塞事件循环,并且那些 setTimeouts 不会运行,因为他们没有得到更改因为您的循环会占用所有可用时间。
-
@MohamedNaguib javascript 是一种单线程语言,这不是用 js 和我知道的任何其他语言编写代码的方式
-
@MohamedNaguib 但你没有解释你在找什么,为什么你想要这种行为?你只需要告诉你想要代码做什么。为什么要重复循环 3 次?
标签: javascript settimeout