Aquí está mi pseudocódigo:
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(); } Quiero que el temporizador se reinicie con cada clic del mouse que llama a some_function() . Lo que realmente sucede es que el tiempo se establece en el primer clic pero nunca se reinicia después de eso.
¿Qué me estoy perdiendo?
Gracias.
mytimeout es una función, no un identificador de tiempo de espera. Lo que necesita almacenar es el resultado de la llamada setTimeout como esta.
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(); } }En la función timer_function devuelve el valor de setTimeout
var mytimeout = function timer_function() { return setTimeout( function() { //Do some more stuff }, 5000); }Eso es porque en usted solo va a reproducir el tiempo de espera solo cuando el usuario presiona la tecla "a". ¡No sé por qué lo mantuviste así, pero esa es probablemente la razón!