একটি ডিবাউন্স ফাংশন একটি ফাংশন কত দ্রুত ফায়ার করতে পারে সেটি লিমিট করে। উদাহরণস্বরূপ, একটি অটোকমপ্লিট টেক্সট বার যা সার্ভার কোয়েরি করে। আপনি যদি প্রতিটি কীস্ট্রোকেই সার্ভার কোয়েরি করেন, তবে এটি অপ্রয়োজনীয় নেটওয়ার্ক এবং মেমরি ইম্প্যাক্ট ডালবে। এর বদলে আপনি একদমে নির্ধারিত সময়ে এই কলগুলোর সংখ্যা লিমিট করতে পারেন।
আপনি নিজের ডিবাউন্স ফাংশন লিখতে পারেন যা আপনার আসল ফাংশনকে আর্গুমেন্ট হিসেবে নেয় এবং এটিকে রেট-লিমিটেড (থ্রটলড) উপায়ে এক্সিকিউট করে।
উদাহরণ
const debounce = (cb, time) => { let timeout; return function() { const wrapperFunc = () => cb.apply(this, arguments); clearTimeout(timeout); timeout = setTimeout(wrapperFunc, time); } }এই ফাংশন ২টি আর্গুমেন্ট নেয়: কলব্যাক এবং ইন্টার벌 যেটিতে এটি কল হবে। ধরুন প্রথম API কল ১ms-এ গেল এবং আপনি টাইম ২৫০ms সেট করলেন, ২৫১ms পর্যন্ত API-তে নতুন কল যাবে না এই ফাংশন কতবারই কল হোক। আপনি আপনার ফাংশন কল এই কল দিয়ে রিপ্লেস করতে পারেন।