Wielokrotne kliknięcie przycisku do uruchamiania timera w JavaScript
Kod, przytoczony przeze mnie powyżej, w rzeczywistości ma pewien problem. Problem ten objawia się w przypadku, jeśli na nasz przycisk wykonamy kilka kliknięć. W tym przypadku każde kliknięcie będzie prowadzić do uruchomienia nowego timera.
Czyli, na przykład, trzy naciśnięcia przycisku doprowadzą do tego, że uruchomione zostaną trzy timery, i każdy z tych timerów będzie wypisywał wartość licznika do konsoli. To oznacza, że wartości będą zmieniać się trzy razy szybciej!
Dla rozwiązania opisanego problemu trzeba po prostu sprawić, aby powtórne naciśnięcie przycisku nie prowadziło do nowego uruchomienia timera. Na przykład, można po starcie timera odwiązać od przycisku powiązany handler kliknięcia:
let start = document.querySelector('#start');
start.addEventListener('click', function func() {
let i = 0;
setInterval(function() {
console.log(++i);
}, 1000);
this.removeEventListener('click', func); // odwiązujemy handler
});
Weźcie wasze rozwiązanie poprzedniego zadania. Sprawdźcie, że wielokrotne naciśnięcie przycisku prowadzi do przyspieszenia odliczania. Poprawcie ten problem.