"यदि कोई कर्मचारी अपना काम अच्छी तरह से करना चाहता है, तो उसे पहले अपने औजारों को तेज करना होगा।" - कन्फ्यूशियस, "द एनालेक्ट्स ऑफ कन्फ्यूशियस। लू लिंगगोंग"
मुखपृष्ठ > प्रोग्रामिंग > जावास्क्रिप्ट में डिबाउंसिंग बनाम थ्रॉटलिंग: आपको उनका उपयोग कब और क्यों करना चाहिए

जावास्क्रिप्ट में डिबाउंसिंग बनाम थ्रॉटलिंग: आपको उनका उपयोग कब और क्यों करना चाहिए

2024-11-02 को प्रकाशित
ब्राउज़ करें:489

Debouncing vs Throttling in JavaScript: When and Why You Should Use Them

जावास्क्रिप्ट आपके वेब ऐप्स को गतिशील और इंटरैक्टिव बनाने में शानदार है, लेकिन एक चीज है जिसे यह अपने आप अच्छी तरह से संभाल नहीं सकता है: बार-बार होने वाली घटनाएं। विंडो का आकार बदलने, स्क्रॉल करने और खोज बॉक्स में टाइप करने जैसी चीज़ों के बारे में सोचें। यदि ठीक से प्रबंधित नहीं किया गया, तो ये आपके ऐप को इवेंट ट्रिगर्स से भर सकते हैं, चीजों को धीमा कर सकते हैं और एक सुस्त उपयोगकर्ता अनुभव बना सकते हैं। यहीं पर डिबाउंसिंग और थ्रॉटलिंग आते हैं। ये तकनीकें आपको यह नियंत्रित करने में मदद करती हैं कि कुछ कार्यों को कितनी बार निष्पादित किया जाता है, जिससे आपका ऐप तेज़ और प्रतिक्रियाशील रहता है।

इस लेख में, हम डिबाउंसिंग और थ्रॉटलिंग को तोड़ेंगे, आपको दिखाएंगे कि उनका उपयोग कब करना है, और उन्हें क्रियान्वित होते देखने के लिए वास्तविक दुनिया के उदाहरण प्रदान करेंगे। आइए इन आवश्यक जावास्क्रिप्ट प्रदर्शन अनुकूलन तकनीकों के बारे में जानें!

डिबाउंसिंग क्या है?

यह काम किस प्रकार करता है

बहस करने के बारे में सोचें जैसे कि आप अपना उत्तर देने से पहले किसी के बात ख़त्म करने का इंतज़ार कर रहे हों। यदि आप कभी ऐसी बातचीत में रहे हों जहां कोई बार-बार आपको टोक रहा हो, तो आपको यह विचार मिल जाएगा! डिबाउंसिंग की मुख्य अवधारणा यह है कि यह किसी फ़ंक्शन के निष्पादन में तब तक देरी करता है जब तक कि पिछली बार ईवेंट ट्रिगर होने के बाद एक निर्दिष्ट समय बीत न जाए।

सरल शब्दों में, यदि कोई घटना (जैसे उपयोगकर्ता टाइपिंग) तेजी से घटित होती रहती है, तो डिबाउंसिंग यह सुनिश्चित करती है कि संबंधित फ़ंक्शन (खोज क्वेरी की तरह) उपयोगकर्ता द्वारा एक निश्चित अवधि के लिए रुकने के बाद ही निष्पादित होता है।

डिबाउंसिंग का उपयोग कब करें

जब आप बार-बार उपयोगकर्ता इनपुट के कारण होने वाली अत्यधिक फ़ंक्शन कॉल को सीमित करना चाहते हैं तो आपको डिबाउंसिंग का उपयोग करना चाहिए। एक उत्कृष्ट उदाहरण तब होता है जब आपके पास एक खोज बॉक्स होता है और आप हर बार उपयोगकर्ता द्वारा टाइप किए जाने पर एक एपीआई कॉल करना चाहते हैं। डिबाउंस किए बिना, प्रत्येक कीस्ट्रोक के लिए एपीआई को कॉल किया जा सकता है, जिससे आपके सर्वर पर अनावश्यक लोड पैदा हो सकता है। डिबाउंसिंग के साथ, एपीआई को केवल तभी कॉल किया जाता है जब उपयोगकर्ता टाइप करना बंद कर देता है।

कोड में बहस

function debounce(func, delay) {
    let timeoutId;
    return function(...args) {
        clearTimeout(timeoutId);
        timeoutId = setTimeout(() => func.apply(this, args), delay);
    };
}

// Usage
const searchInput = document.getElementById('search');
searchInput.addEventListener('input', debounce(() => {
    console.log('API call made!');
}, 300)); // Only executes 300ms after the last keystroke

इस उदाहरण में, डिबाउंस फ़ंक्शन यह सुनिश्चित करता है कि एपीआई कॉल उपयोगकर्ता द्वारा टाइप करना बंद करने के 300 मिलीसेकंड बाद ही होती है।

थ्रॉटलिंग क्या है?

यह डिबाउंसिंग से किस प्रकार भिन्न है

अब, बात करते हैं थ्रॉटलिंग के बारे में। यदि डिबाउंसिंग तब तक प्रतिक्रिया देने का इंतजार कर रहा है जब तक कि बातचीत बंद न हो जाए, थ्रॉटलिंग एक ट्रैफिक पुलिस वाले की तरह है जो हर कुछ सेकंड में केवल एक कार को जाने देता है, चाहे कितनी भी कारें इंतजार कर रही हों। यह सुनिश्चित करता है कि किसी फ़ंक्शन को प्रत्येक निर्धारित अवधि में अधिकतम एक बार कॉल किया जाता है, भले ही ईवेंट बार-बार ट्रिगर हो।

थ्रॉटलिंग का उपयोग कब करें

आप थ्रॉटलिंग का उपयोग करना चाहेंगे जब आपको समय के साथ लगातार निष्पादन सुनिश्चित करने की आवश्यकता हो। उदाहरण के लिए, जब कोई उपयोगकर्ता किसी पृष्ठ को नीचे स्क्रॉल करता है, तो स्क्रॉल ईवेंट प्रति सेकंड दर्जनों बार ट्रिगर हो सकता है। थ्रॉटलिंग के बिना, आपका ऐप धीमा हो सकता है क्योंकि यह उन सभी घटनाओं को संभालने का प्रयास करता है। थ्रॉटलिंग सीमित करता है कि स्क्रॉल इवेंट हैंडलर कितनी बार निष्पादित कर सकता है, जिससे प्रदर्शन में सुधार होता है।

कोड में थ्रॉटलिंग

function throttle(func, limit) {
    let lastCall = 0;
    return function(...args) {
        const now = Date.now();
        if (now - lastCall >= limit) {
            lastCall = now;
            func.apply(this, args);
        }
    };
}

// Usage
window.addEventListener('scroll', throttle(() => {
    console.log('Scroll event!');
}, 1000)); // Executes at most once every 1000ms

यहां, थ्रॉटल फ़ंक्शन यह सुनिश्चित करता है कि स्क्रॉल इवेंट हैंडलर प्रत्येक 1000 मिलीसेकंड में केवल एक बार निष्पादित होता है, यह सुनिश्चित करते हुए कि आपका ऐप अभिभूत नहीं होता है।

वास्तविक दुनिया के उदाहरण

आइए इन तकनीकों को अधिक व्यावहारिक संदर्भ में रखें। मान लें कि आप एक रिएक्ट ऐप बना रहे हैं जहां उपयोगकर्ता एक खोज बॉक्स में टाइप करते हैं। आप अपने सर्वर पर एपीआई कॉलों की बाढ़ को रोकने के लिए इनपुट इवेंट को खारिज कर सकते हैं। वैकल्पिक रूप से, यदि आप ट्रैक कर रहे हैं कि उपयोगकर्ता ने पृष्ठ पर कितनी दूर तक स्क्रॉल किया है, तो आप अपने प्रदर्शन को अनुकूलित करने के लिए थ्रॉटलिंग का उपयोग कर सकते हैं।

प्रतिक्रिया में बहस

import { useState } from 'react';

function SearchComponent() {
    const [query, setQuery] = useState('');

    const handleSearch = debounce((value) => {
        // API call with the value
        console.log('Searching for:', value);
    }, 300);

    return (
         {
                setQuery(e.target.value);
                handleSearch(e.target.value);
            }}
        />
    );
}

थ्रॉटलिंग स्क्रॉल इवेंट

import { useEffect } from 'react';

function ScrollTracker() {
    useEffect(() => {
        const handleScroll = throttle(() => {
            console.log('Scrolling...');
        }, 1000);

        window.addEventListener('scroll', handleScroll);
        return () => window.removeEventListener('scroll', handleScroll);
    }, []);

    return 
Scroll to see throttling in action!
; }

प्रदर्शन अनुकूलन के लिए सर्वोत्तम अभ्यास

डिबाउंसिंग बनाम थ्रॉटलिंग: कब चुनें

यहां एक त्वरित नियम दिया गया है:

  • जब आप तब तक इंतजार करना चाहते हैं जब तक उपयोगकर्ता कुछ करना बंद नहीं कर देता, तब डिबाउंसिंग एकदम सही है। उदाहरण के लिए, खोज बार में टाइप करते समय।
  • जब आप समय के साथ लगातार, आवधिक निष्पादन सुनिश्चित करना चाहते हैं तो थ्रॉटलिंग सबसे अच्छा काम करता है। यह विंडोज़ को स्क्रॉल करने या आकार बदलने के लिए आदर्श है।

जब आप जानते हैं कि आप किस प्रकार की घटना से निपट रहे हैं और यह कितनी बार ट्रिगर होती है, तो आप कार्य के लिए सही तकनीक चुन सकते हैं।

निष्कर्ष

प्रदर्शन को अनुकूलित करने के लिए जावास्क्रिप्ट में लगातार घटनाओं को नियंत्रित करना आवश्यक है, और डिबाउंसिंग और थ्रॉटलिंग दोनों शक्तिशाली समाधान प्रदान करते हैं। प्रत्येक का उपयोग कब करना है, यह समझकर, आप अपने वेब एप्लिकेशन को अधिक सहज और अधिक प्रतिक्रियाशील बना सकते हैं, चाहे वह खोज इनपुट को संभालने के लिए हो, विंडोज़ का आकार बदलने के लिए हो, या स्क्रॉल इवेंट को प्रबंधित करने के लिए हो।

अगली बार जब आप देखें कि आपका ऐप बहुत सारी घटनाओं में फंस गया है, तो अपने आप से पूछें: क्या मुझे बहस करनी चाहिए या गला घोंटना चाहिए? आपको खुशी होगी कि आपने ऐसा किया!

इसे आज़माने के लिए तैयार हैं? अगली बार जब आप किसी प्रोजेक्ट पर काम कर रहे हों, तो इन तकनीकों पर एक नज़र डालें। आपको आश्चर्य होगा कि सब कुछ कितना सहज लगता है!

विज्ञप्ति वक्तव्य इस लेख को पुन: प्रस्तुत किया गया है: https://dev.to/paharihacker/debuncing-vs-throttling-in-javascript-when-no-shen-and-why-you-should-use-them-1l09?1 यदि कोई उल्लंघन है, तो कृपया इसे हटाने के लिए [email protected] पर संपर्क करें।
नवीनतम ट्यूटोरियल अधिक>

चीनी भाषा का अध्ययन करें

अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।

Copyright© 2022 湘ICP备2022001581号-3