let throttleTimer;
const searchBox = document.getElementById('search-box');
searchBox.addEventListener('input', function (event) {
if (!throttleTimer) { // যদি আগের কল থেকে নির্দিষ্ট সময় (৫০০ms) না কেটে থাকে
console.log("Searching for:", event.target.value);
throttleTimer = setTimeout(() => {
throttleTimer = null; // ৫০০ms পর আবার নতুন কল করার অনুমতি দেবে
}, 500);
}
});
Explaination
- "h" টাইপ করলে কী হবে?
- শুরুতে throttleTimer ফাঁকা থাকে
let throttleTimer; // undefined
- if (!throttleTimer) চেক করবে → যেহেতু throttleTimer ফাঁকা, এটি true হবে
- শুরুতে throttleTimer ফাঁকা থাকে
if (!undefined) { // সত্য হবে, তাই ভেতরের কোড চলবে
- সার্চ লগ হবে
console.log("Searching for: h");
if (!undefined) { // সত্য হবে, তাই ভেতরের কোড চলবে
- throttleTimer সেট হয়ে যাবে, যাতে পরবর্তী ৫০০ms পর্যন্ত নতুন সার্চ না হয়
throttleTimer = setTimeout(() => {
throttleTimer = null; // ৫০০ms পরে null হয়ে যাবে, যাতে আবার সার্চ চালানো যায়
}, 500);
- "he" টাইপ করলে ১০০ms পরে কী হবে?
- এখন throttleTimer তে একটি টাইমার সেট আছে, তাই if (!throttleTimer) FALSE হয়ে যাবে
- ফলে console.log("Searching for: he") চলবে না!
Short explaination
- প্রথমবার if (!throttleTimer) true হয়, তাই ফাংশন চলে।
- এরপর ৫০০ms এর জন্য এটি false করে রাখা হয়, যাতে একই কোড বারবার না চলে।
- ৫০০ms পরে throttleTimer = null; সেট হয়, ফলে আবার if (!throttleTimer) true হয়ে যায়, এবং পরবর্তী ইনপুট লগ হয়।
Top comments (0)