无法在 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);
}