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

डेटाबेस क्वेरीज़ के साथ काम करते समय मैं Node.js में वादों को सही ढंग से कैसे जोड़ सकता हूँ?

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

How Can I Chain Promises Correctly in Node.js When Working with Database Queries?

वादा और कनेक्शन मुद्दे

इस Node.js कोड में, एक वादे से अपेक्षा की जाती है कि वह findUser फ़ंक्शन के पूरा होने की प्रतीक्षा करे, जो यदि ऐसा नहीं होता। समस्या डेटाबेस प्रश्नों के अतुल्यकालिक निष्पादन से उत्पन्न होती है। यह फ़ंक्शन एक कॉलबैक फ़ंक्शन को एक तर्क के रूप में लेता है, जिसे कनेक्शन तैयार होने पर कॉल किया जाता है। हालाँकि, कोड इस कॉलबैक के भीतर गलत तरीके से डेटा लौटाता है, जिसके कारण क्वेरी पूरी होने से पहले अपरिभाषित लौटाया जाता है। यह दर्शाता है कि क्वेरी सफल थी या नहीं।

वादों की शृंखला

वादों का उपयोग कोड को अनुमति देता है क्रमिक रूप से निष्पादित किया जाए। प्रदान किए गए कोड में, पहले वादे को कॉलबैक फ़ंक्शंस के बजाय फिर का उपयोग करके अगले वादे से जोड़ा जाना चाहिए, जैसा कि नीचे दिखाया गया है:

promise.then(function(rows) { नया वादा लौटाएं (फ़ंक्शन (समाधान, अस्वीकार) { लॉगिनसी.कुछ करें(डेटा); अगर (सफलता) { समाधान(डेटा); } अन्य { अस्वीकार(कारण); } }); }, फ़ंक्शन(कारण) { कंसोल.लॉग ("त्रुटि हैंडलर दूसरा"); });

त्रुटि प्रबंधन

'त्रुटि हैंडलर दूसरा' संदेश आउटपुट होने का कारण यह है कि डेटाबेस कनेक्शन विफल होने पर एक त्रुटि उत्पन्न होती है। कनेक्शन.ऑन('एरर') इवेंट श्रोता में त्रुटि प्रबंधन का सही ढंग से उपयोग नहीं किया गया है। यह त्रुटि फाइंडयूजर फ़ंक्शन में प्रसारित होती है और चेनिंग में दूसरे त्रुटि हैंडलर द्वारा कैप्चर की जाती है। .

नवीनतम ट्यूटोरियल अधिक>

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

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

Copyright© 2022 湘ICP备2022001581号-3