Простой перезапуск clearInterval вместо создания задержки - PullRequest
0 голосов
/ 30 марта 2020

Я пытаюсь сделать так, чтобы по умолчанию каждые 3 секунды регистрировались «тесты» на консоли (через функцию test()), и , которые всякий раз, когда one или * Нажатие кнопок 1005 * приводит к паузе в 10 секунд, пока тестовая функция не регистрируется на консоли каждые 3 секунды.

Проблема, которую я получаю, состоит в том, что (по крайней мере, я так думаю) функция продолжает выполняться после каждого щелчок через 10 секунд после этого щелчка означает, что происходит загрузка неконтролируемых консольных журналов, а не ожидание в течение 10 секунд после нажатия любой из кнопок, прежде чем возобновлять журналы каждые три секунды.

Здесь 'код :

var timer = setInterval(test, 3000);

function test() {
  console.log('test');
}

function one() {
  console.log('one');
  resetTimer(timer, 10000);
}

function two() {
  console.log('two');
  resetTimer(timer, 10000);
}

function resetTimer(clock, interval) {
  clearInterval(clock);

  setTimeout(function() {
    clearInterval(clock);
    clock = setInterval(test, 3000);
  }, interval-3000);
  
}
<button id='one' onclick='one()'>one</button>
<button id='two' onclick='two()'>two</button>

Кто-нибудь знает, почему это происходит и как это исправить? Спасибо за любую помощь здесь.

Codepen: https://codepen.io/ns91/pen/YzXBaJN

...