व्यक्तिगत रूप से मुझे थ्रॉटल की तुलना में समझ में आना कठिन था ।
चूंकि दोनों फ़ंक्शन आपको स्थगित करने और कुछ निष्पादन की दर को कम करने में मदद करते हैं। मान लें कि आप बार-बार थ्रॉटल / डेब्यू द्वारा लौटाए गए सजाए गए कार्यों को बुला रहे हैं ...
- थ्रॉटल : मूल फ़ंक्शन को निर्दिष्ट अवधि के अनुसार अधिकतम एक बार कहा जाता है।
- डेब्यू : मूल फ़ंक्शन को कॉल किया जाना चाहिए क्योंकि निर्दिष्ट अवधि के बाद कॉलर ने सजाए गए फ़ंक्शन को कॉल करना बंद कर दिया ।
मैंने लक्ष्य को हासिल करने के लिए महत्वपूर्ण बहस का अंतिम भाग पाया। मुझे _.debounce के कार्यान्वयन का एक पुराना संस्करण भी मिला जो समझ को समझने में मदद करता है ( https://davidwalsh.name/function-debounce के शिष्टाचार )।
// Returns a function, that, as long as it continues to be invoked, will not
// be triggered. The function will be called after it stops being called for
// N milliseconds. If `immediate` is passed, trigger the function on the
// leading edge, instead of the trailing.
_.debounce = function(func, wait, immediate) {
var timeout;
return function() {
var context = this, args = arguments;
var later = function() {
timeout = null;
if (!immediate) func.apply(context, args);
};
var callNow = immediate && !timeout;
clearTimeout(timeout);
timeout = setTimeout(later, wait);
if (callNow) func.apply(context, args);
};
};
एक दूर का रूपक, लेकिन शायद यह भी मदद कर सकता है।
आपका एक दोस्त है जिसका नाम चैट्टी है जो IM के माध्यम से आपके साथ बात करना पसंद करता है। यह मानते हुए कि जब वह बात करती है, तो वह हर 5 सेकंड में एक नया संदेश भेजता है, जबकि आपका आईएम एप्लिकेशन आइकन ऊपर और नीचे उछल रहा है, आप इसे ले सकते हैं ...
- Naive approach: जब तक यह आता है हर संदेश की जाँच करें। जब आपका ऐप आइकन बाउंस हो जाए, तो चेक करें। यह सबसे प्रभावी तरीका नहीं है, लेकिन आप हमेशा अप-टू-डेट रहते हैं।
- थ्रोटल दृष्टिकोण: आप हर 5 मिनट में एक बार जांच करते हैं (जब नए होते हैं)। जब नया संदेश आता है, यदि आपने पिछले 5 मिनट में कभी भी जाँच की है, तो इसे अनदेखा करें। आप इस दृष्टिकोण के साथ अपना समय बचाते हैं, जबकि अभी भी लूप में हैं।
- डेब्यू अप्रोच: आप चैट्टी को जानते हैं, वह एक पूरी कहानी को टुकड़ों में तोड़ती है, उन्हें एक के बाद एक मैसेज में भेजती है। आप तब तक इंतजार करते हैं जब तक चैट्टी पूरी कहानी खत्म नहीं कर देती: यदि वह 5 मिनट के लिए संदेश भेजना बंद कर देती है, तो आप मान लेंगे कि वह पूरी हो चुकी है, अब आप सभी की जांच करें।