React Academy · पाठ

Debounce के साथ असिंक्रोनस सुझाव

उपयोगकर्ता के टाइप करते समय API से सुझाव प्राप्त करें और अत्यधिक नेटवर्क अनुरोधों से बचने के लिए debounce करें

पाठ 3, कुल 4 में से13 चरण

Debounce के साथ असिंक्रोनस सुझाव, CoddyKit पर React Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह React Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

स्थिर फ़िल्टर की जगह एपीआई से डेटा प्राप्त करना

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

लोड होने और त्रुटि के लिए नई स्थिति

ऑटोकम्प्लीट में दो नए स्थिति चर जोड़ें: लोडिंग के दौरान घूमता संकेतक दिखाने के लिए isLoading (बूलियन), और डेटा प्राप्त करने में विफलता होने पर त्रुटि संदेश दिखाने के लिए error (स्ट्रिंग या null)। इनके माध्यम से उपयोगकर्ताओं को अतुल्यकालिक प्रक्रिया की जानकारी मिलती है, बजाय इसके कि वे सोचते रहें कि सुझाव क्यों नहीं दिखाई दे रहे हैं।

डेटा प्राप्त करने वाला प्रभाव

डेटा प्राप्त करने वाले useEffect में शुरुआत में setIsLoading(true) और setError(null) सेट करें। फिर fetch(url) चलाएँ, JSON को पार्स करें, setSuggestions(data) कॉल करें और अंत में finally खंड में, या सफलता और त्रुटि दोनों मार्गों के बाद, setIsLoading(false) सेट करें। प्रभाव की निर्भरता वाली सरणी में केवल debouncedInputValue होना चाहिए।

अनुरोध रद्द करने के लिए AbortController का उपयोग

प्रभाव की शुरुआत में एक नया AbortController बनाएँ और डेटा प्राप्त करने के विकल्पों में controller.signal पास करें। सफ़ाई फ़ंक्शन में controller.abort() कॉल करें। जब उपयोगकर्ता टाइप करता है और डिबाउंस किया गया मान बदलता है, तो नया डेटा प्राप्त करना शुरू होने से पहले पिछली डेटा-प्राप्ति रद्द हो जाती है। इससे पुराने परिणाम गलत क्रम में आने से रुकते हैं।

रद्द किए गए अनुरोधों की त्रुटियों को संभालना

डेटा प्राप्त करना रद्द होने पर वह DOMException नामक AbortError के साथ अस्वीकृत हो जाता है। अपने त्रुटि-पकड़ खंड में if (err.name === 'AbortError') return; जाँचकर रद्द किए गए डेटा-प्राप्ति प्रयासों को चुपचाप अनदेखा करें। केवल वास्तविक नेटवर्क त्रुटियों या ऐसी एपीआई त्रुटियों को संभालें जिन्हें उपयोगकर्ता को दिखाना आवश्यक हो।

isLoading स्थिति प्रबंधन

डेटा प्राप्त करने से पहले isLoading को true और उसके पूरा होने या असफल होने के बाद false पर सेट करें। इसे हमेशा रीसेट करने के लिए finally खंड का उपयोग करें: fetch(url).then(...).catch(...).finally(() => setIsLoading(false))। finally खंड के बिना, डेटा-प्राप्ति की त्रुटि होने पर घूमता संकेतक हमेशा चलता रहेगा।

ड्रॉपडाउन में लोड होने का संकेतक

जब isLoading true हो और इनपुट में पाठ हो, तो सुझावों की सूची के बजाय बीच में घूमता संकेतक दिखाने वाला ड्रॉपडाउन प्रदर्शित करें। इससे उपयोगकर्ता को पता चलता है कि परिणाम आने वाले हैं। लोडिंग false होने और सुझाव आ जाने पर घूमते संकेतक की जगह वास्तविक सुझाव आइटम दिखाएँ।

ड्रॉपडाउन में त्रुटि स्थिति

जब error शून्य न हो, तो सुझावों के बजाय त्रुटि संदेश वाला ड्रॉपडाउन दिखाएँ। "सुझाव लोड नहीं किए जा सके। कृपया फिर से प्रयास करें।" जैसा संदेश सीधे त्रुटि-पाठ की तुलना में अधिक उपयोगी होता है। चाहें तो ऐसा पुनः प्रयास बटन भी जोड़ सकते हैं जो डेटा प्राप्त करने की प्रक्रिया फिर से शुरू करे।

न्यूनतम वर्ण सीमा

खाली पाठ-श्रृंखलाओं या बहुत छोटी क्वेरियों के लिए डेटा प्राप्त करने से बचें, क्योंकि उनसे बहुत अधिक अप्रासंगिक परिणाम मिल सकते हैं। प्रभाव की शुरुआत में यह जाँच करें: if (debouncedInputValue.length < 2) { setSuggestions([]); return; }। इससे अनावश्यक एपीआई कॉल कम होते हैं और एक ही वर्ण से मिलने वाले परिणामों की बहुत लंबी सूची से बचा जा सकता है।

प्राप्त किए गए परिणामों को कैश करना

प्राप्त किए गए परिणामों को useRef Map में रखें: const cache = useRef(new Map())। डेटा प्राप्त करने से पहले जाँचें: if (cache.current.has(query)) { setSuggestions(cache.current.get(query)); return; }। डेटा सफलतापूर्वक प्राप्त होने के बाद परिणाम को संग्रहित करें। इससे उपयोगकर्ता द्वारा पहले टाइप की जा चुकी क्वेरियों के लिए दोबारा नेटवर्क अनुरोध नहीं भेजे जाते।

अनुशंसित डिबाउंस विलंब

विशेष रूप से ऑटोकम्प्लीट के लिए 200-300ms का डिबाउंस विलंब सबसे संतुलित विकल्प है। इससे कम विलंब (200ms से कम) तेज़ी से टाइप करने वाले उपयोगकर्ताओं के लिए बहुत अधिक अनुरोध भेजता है। इससे अधिक विलंब (400ms से अधिक) सुझावों को धीमा और अनुत्तरदायी महसूस कराता है। वास्तविक उपयोग के ऑटोकम्प्लीट कार्यान्वयनों में 250ms आम तौर पर इस्तेमाल किया जाने वाला डिफ़ॉल्ट है।

ऑटोकम्प्लीट में AbortController

एपीआई से डेटा प्राप्त करने वाले डिबाउंस किए गए ऑटोकम्प्लीट में AbortController महत्वपूर्ण क्यों है?

पाठ का पुनरावलोकन: डिबाउंस के साथ अतुल्यकालिक सुझाव

स्थिर फ़िल्टरिंग की जगह ऐसे useEffect में एपीआई से डेटा प्राप्त करें जो डिबाउंस किए गए मान पर निर्भर करता है। पुराने अनुरोधों को रद्द करने के लिए AbortController का उपयोग करें। उपयोगकर्ता को जानकारी देने के लिए isLoading और error स्थिति जोड़ें। अत्यधिक कॉल से बचने के लिए न्यूनतम वर्ण सीमा निर्धारित करें। दोहराए गए नेटवर्क अनुरोधों को छोड़ने के लिए परिणामों को रेफ़रेंस में कैश करें।

शुरुआत निःशुल्क

एआई शिक्षक के साथ React सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
88
पाठ
324

अक्सर पूछे जाने वाले प्रश्न

क्या “Debounce के साथ असिंक्रोनस सुझाव” पाठ निःशुल्क है?

हाँ—“Debounce के साथ असिंक्रोनस सुझाव” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और React Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। React Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“Debounce के साथ असिंक्रोनस सुझाव” में मैं क्या सीखूँगा?

उपयोगकर्ता के टाइप करते समय API से सुझाव प्राप्त करें और अत्यधिक नेटवर्क अनुरोधों से बचने के लिए debounce करें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ React Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या React Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर React Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।

“Debounce के साथ असिंक्रोनस सुझाव” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस React Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर React Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. सुझाव सूची के साथ नियंत्रित इनपुट
  2. सुझाव सूचियों में कीबोर्ड नेविगेशन
  3. Debounce के साथ असिंक्रोनस सुझाव
  4. ऑटोकम्प्लीट विजेट की सुगम्यता
← React Academy पर वापस जाएँ