【问题标题】:clearTimeout does not work in recursive functionclearTimeout 在递归函数中不起作用
【发布时间】:2020-07-26 14:20:29
【问题描述】:

我尝试使用 clearTimeout 来逃避递归 setTimeout 函数。

但它不能正常工作,所以我只是使用 if 函数返回它。

   word.move = () => {
    if (test >= 10) {
      console.log(wodrd.move);
      //clearTimeout(word.move);
      return;
    }
    test++;
    console.log(test);
    word.node.style.top = `${test}px`;
    setTimeout(word.move, speed);
  };

如何使用 clearTimeout 停止它?

【问题讨论】:

  • setTimeout 返回一个 id,您必须将其传递给 clearTimeout。

标签: javascript recursion settimeout cleartimeout


【解决方案1】:

setTimeout 返回一个您需要保存的值,以便稍后传递给clearTimeout

let wordMoveTimeout;

word.move = () => {
  if (test >= 10) {
    clearTimeout(wordMoveTimeout);
    return;
  }

  // other logic here...

  wordMoveTimeout = setTimeout(word.move, speed);
}

阅读documentation on how to use setTimeout here

【讨论】:

  • 感谢您的回答!
猜你喜欢
  • 1970-01-01
  • 2021-02-12
  • 1970-01-01
  • 2018-07-14
  • 2018-04-19
  • 2021-10-28
  • 1970-01-01
  • 2018-04-02
相关资源
最近更新 更多