clearTimeout не работает в рекурсивной функции - PullRequest
0 голосов
/ 14 апреля 2020

Я пытался использовать 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?

1 Ответ

0 голосов
/ 14 апреля 2020

setTimeout возвращает значение, которое необходимо сохранить, чтобы перейти к clearTimeout позже.

let wordMoveTimeout;

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

  // other logic here...

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

Прочтите документацию о том, как использовать setTimeout здесь

...