जावास्क्रिप्ट में टाइमर शुरू करने के लिए बटन पर बार-बार क्लिक करना
मेरे द्वारा ऊपर दिया गया कोड, वास्तव में एक समस्या रखता है। यह समस्या तब प्रकट होती है जब हमारे बटन पर कई बार क्लिक किया जाता है। इस स्थिति में प्रत्येक क्लिक एक नए टाइमर के शुरू होने का कारण बनेगा।
यानी, उदाहरण के लिए, बटन पर तीन बार क्लिक करने से यह होगा कि तीन टाइमर शुरू हो जाएंगे, और इनमें से प्रत्येक टाइमर काउंटर का मान कंसोल में आउटपुट करेगा। इसका मतलब है, कि मान तीन गुना तेजी से बदलेंगे!
वर्णित समस्या के समाधान के लिए बस यह करना होगा कि बटन पर दोबारा क्लिक करने से टाइमर का नया शुरूआत न हो। उदाहरण के लिए, टाइमर शुरू होने के बाद बटन से बंधे क्लिक हैंडलर को अलग किया जा सकता है:
let start = document.querySelector('#start');
start.addEventListener('click', function func() {
let i = 0;
setInterval(function() {
console.log(++i);
}, 1000);
this.removeEventListener('click', func); // हैंडलर को अलग करते हैं
});
अपने पिछले कार्य का समाधान लें। जांचें कि बटन पर बार-बार क्लिक करने से गिनती की गति बढ़ जाती है। इस समस्या को ठीक करें।