Daugkartis mygtuko paspaudimas laikmačio paleidimui JavaScript
Aukščiau pateiktas kodas iš tikrųjų turi tam tikrą problemą. Ši problema pasireiškia tuo atveju, jei mūsų mygtukas yra paspaustas kelis kartus. Tokiu atveju kiekvienas paspaudimas paleis naują laikmatį.
Tai yra, pavyzdžiui, trys mygtuko paspaudimai sukels tai, kad bus paleisti trys laikmačiai, ir kiekvienas iš šių laikmačių išves skaitiklio reikšmę į konsolę. Tai reiškia, kad reikšmės keisis tris kartus greičiau!
Norint išspręsti aprašytą problemą, tiesiog reikia padaryti taip, kad pakartotinis mygtuko paspaudimas neleistų naujo laikmačio. Pavyzdžiui, galima po laikmačio paleidimo atjungti nuo mygtuko susietą paspaudimo apdorojimo funkciją:
let start = document.querySelector('#start');
start.addEventListener('click', function func() {
let i = 0;
setInterval(function() {
console.log(++i);
}, 1000);
this.removeEventListener('click', func); // atjungiame apdorojimo funkciją
});
Paimkite savo ankstesnės užduoties sprendimą. Patikrinkite, ar daugkartis mygtuko paspaudimas sukelia skaičiavimo pagreitėjimą. Išspręskite šią problemą.