एक डिबाउंस फ़ंक्शन उस दर को सीमित करता है जिस पर कोई फ़ंक्शन फायर हो सकता है। उदाहरण के लिए, एक ऑटोकंप्लीट टेक्स्ट बार जो सर्वर को क्वेरी करता है। यदि आप प्रत्येक कीस्ट्रोक पर सर्वर को क्वेरी करते हैं, तो इसका अनावश्यक रूप से नेटवर्क और मेमोरी प्रभाव पड़ेगा। आप इसके बजाय क्या कर सकते हैं, दिए गए समय में इन कॉल्स की संख्या को सीमित करें।
आप अपना खुद का डिबाउंस फ़ंक्शन लिख सकते हैं जो आपके वास्तविक फ़ंक्शन को तर्क के रूप में लेता है और इसे रेट-लिमिटेड (थ्रॉटल्ड) तरीके से एक्ज़िक्यूट करता है।
उदाहरण
const debounce = (cb, time) => { let timeout; return function() { const wrapperFunc = () => cb.apply(this, arguments); clearTimeout(timeout); timeout = setTimeout(wrapperFunc, time); } }
यह फ़ंक्शन 2 तर्क लेता है: कॉलबैक और वह अंतराल जिसमें इसे कॉल किया जाना चाहिए। तो मान लीजिए पहली API कॉल 1ms पर गई और आपने समय 250ms सेट किया है, 251ms तक API पर नई कॉल नहीं जाएगी चाहे इस फ़ंक्शन को कितनी बार कॉल किया गया हो। आप इस कॉल का उपयोग करके अपने फ़ंक्शन कॉल को बदल सकते हैं।