无法在 JavaScript 中重置 setTimeout 计时器
Unable to reset setTimeout timer in JavaScript
这是我的伪代码:
if(key.pressed = 'a') {
activate = true;
}
var mytimeout = function timer_function() {
// Do stuff;
setTimeout( function() {
// do more stuff
}, 5000);
}
function some_function() {
if(activated) {
// do stuff
clearTimeout(mytimeout);
timer_function();
}
}
if(mouse.click == true) {
some_function();
}
我希望在每次调用 some_function()
的鼠标单击时重置计时器。实际发生的情况是,时间是在第一次点击时设置的,但之后再也不会重置。
我错过了什么?
谢谢。
mytimeout
是函数,不是超时句柄。您需要存储的是 setTimeout
这样调用的结果。
var timeoutHandle;
function timer_function() {
// Do stuff;
timeoutHandle = setTimeout( function() {
// do more stuff
}, 5000);
}
function some_function() {
if(activated) {
// do stuff
clearTimeout(timeoutHandle);
timer_function();
}
}
那是因为您只会在用户按下“a”键时重播超时。我不知道你为什么保持这样,但可能就是这个原因。!
在函数timer_function
中returnsetTimeout的值
var mytimeout = function timer_function() {
return setTimeout( function() {
//Do some more stuff
}, 5000);
}
这是我的伪代码:
if(key.pressed = 'a') {
activate = true;
}
var mytimeout = function timer_function() {
// Do stuff;
setTimeout( function() {
// do more stuff
}, 5000);
}
function some_function() {
if(activated) {
// do stuff
clearTimeout(mytimeout);
timer_function();
}
}
if(mouse.click == true) {
some_function();
}
我希望在每次调用 some_function()
的鼠标单击时重置计时器。实际发生的情况是,时间是在第一次点击时设置的,但之后再也不会重置。
我错过了什么?
谢谢。
mytimeout
是函数,不是超时句柄。您需要存储的是 setTimeout
这样调用的结果。
var timeoutHandle;
function timer_function() {
// Do stuff;
timeoutHandle = setTimeout( function() {
// do more stuff
}, 5000);
}
function some_function() {
if(activated) {
// do stuff
clearTimeout(timeoutHandle);
timer_function();
}
}
那是因为您只会在用户按下“a”键时重播超时。我不知道你为什么保持这样,但可能就是这个原因。!
在函数timer_function
中returnsetTimeout的值
var mytimeout = function timer_function() {
return setTimeout( function() {
//Do some more stuff
}, 5000);
}