अतुल्यकालिक प्रोग्रामिंग सॉफ्टवेयर विकास में एक प्रधान है। यह विश्वास करना कठिन है कि यह प्रोग्रामिंग अवधारणा इक्कीसवीं सदी के आसपास ही रही है। F# प्रोग्रामिंग भाषा 2007 में एसिंक्रोनस प्रोग्रामिंग पेश करने वाली अपने साथियों में पहली थी।
अन्य भाषाओं जैसे सी #, पायथन, जावास्क्रिप्ट, और सी ++ ने धीरे-धीरे एसिंक्रोनस प्रोग्रामिंग के लिए समर्थन जोड़ा। बड़ा सवाल यह है कि एसिंक्रोनस प्रोग्रामिंग आपके अनुप्रयोगों में क्या मूल्य जोड़ती है?
यह लेख उस और अन्य सवालों के जवाब देता है, इसलिए आपको एसिंक्रोनस प्रोग्रामिंग का उपयोग करने के तरीके के बारे में सब कुछ पता चल जाएगा।
सिंक्रोनस प्रोग्रामिंग क्या है?
सिंक्रोनस प्रोग्रामिंग एक प्रोग्राम को उसके सबसे बुनियादी रूप में संदर्भित करता है। यह प्रोग्रामिंग मॉडल प्रोग्राम या स्क्रिप्ट में कोड की पंक्तियों को क्रमिक रूप से प्रोसेस करता है। यह हमेशा एक प्रोग्राम में कोड की पहली पंक्ति से शुरू होता है। फिर यह तब तक प्रतीक्षा करता है जब तक कि कोड की प्रत्येक पंक्ति अगले पर जाने से पहले अपना निष्पादन पूरा नहीं कर लेती।
सिंक्रोनस मॉडल में सशर्त कोड भी शामिल है, जैसे
अगर तथा जबकि बयान। हालांकि सशर्त विवरण में केवल कुछ कोड निष्पादित होंगे, फिर भी प्रोग्राम क्रमिक रूप से चलेगा।तुल्यकालिक कार्यक्रम उदाहरण
कॉन्स्ट सिंककोड = () => {
कंसोल.लॉग ("यह कार्यक्रम में पहली पंक्ति है")
कंसोल.लॉग ("यह कार्यक्रम में दूसरी पंक्ति है")
कंसोल.लॉग ("यह कार्यक्रम की अंतिम पंक्ति है")
}
सिंककोड ();
ऊपर दिए गए जावास्क्रिप्ट प्रोग्राम को चलाने से कंसोल में निम्न आउटपुट उत्पन्न होगा:
यह कार्यक्रम की पहली पंक्ति है
यह कार्यक्रम की दूसरी पंक्ति है
यह कार्यक्रम की अंतिम पंक्ति है
उपरोक्त आउटपुट बिल्कुल वही है जो आपको उम्मीद करनी चाहिए। कार्यक्रम ऊपर से शुरू होता है और अगले पर जाने से पहले कोड की एक पंक्ति समाप्त होने तक प्रतीक्षा करता है।
अतुल्यकालिक प्रोग्रामिंग क्या है?
एसिंक्रोनस प्रोग्रामिंग सिंक्रोनस प्रोग्रामिंग के विपरीत है। अतुल्यकालिक प्रोग्रामिंग मॉडल एक साथ कोड की कई पंक्तियों को संसाधित करता है। यह तब तक प्रतीक्षा नहीं करता जब तक कि किसी प्रोग्राम में कोड की पिछली पंक्ति अगले पर जाने से पहले अपना निष्पादन पूरा नहीं कर लेती।
संबंधित: तुल्यकालिक बनाम। अतुल्यकालिक प्रोग्रामिंग: वे कैसे भिन्न हैं?
अतुल्यकालिक प्रोग्रामिंग निष्पादन समय को आधा कर सकती है, प्रभावी रूप से तेज कंप्यूटर बना सकती है।
अतुल्यकालिक कार्यक्रम उदाहरण
कॉन्स्ट AsyncCode = () => {
कंसोल.लॉग ("यह कार्यक्रम में पहली पंक्ति है")
सेटटाइमआउट (() => {
कंसोल.लॉग ("यह कार्यक्रम में दूसरी पंक्ति है")
}, 3000)
कंसोल.लॉग ("यह कार्यक्रम की अंतिम पंक्ति है")
}
एसिंककोड ();
ऊपर दिए गए JavaScript कोड को निष्पादित करने से आपके कंसोल में निम्न आउटपुट उत्पन्न होंगे:
यह कार्यक्रम की पहली पंक्ति है
यह कार्यक्रम की अंतिम पंक्ति है
यह कार्यक्रम की दूसरी पंक्ति है
यदि आप उपरोक्त कंसोल आउटपुट की तुलना एसिंक्रोनस प्रोग्राम से करते हैं जो इसे उत्पन्न करता है, तो आप देखेंगे कि एक स्पष्ट विसंगति है। कॉल टू लॉग जो कहता है "यह कार्यक्रम में दूसरी पंक्ति है" उस से पहले होता है जो कहता है "यह कार्यक्रम में अंतिम पंक्ति है"। हालाँकि, कंसोल आउटपुट इसे प्रतिबिंबित नहीं करता है।
यह देखते हुए कि जावास्क्रिप्ट मुख्य रूप से तुल्यकालिक है, उपरोक्त कार्यक्रम में कोड क्रमिक रूप से निष्पादित किया गया था। लेकिन जावास्क्रिप्ट एसिंक्रोनस प्रोग्रामिंग का समर्थन करता है जैसे सुविधाओं के माध्यम से सेटटाइमआउट () तरीका।
सेटटाइमआउट () विधि एक अतुल्यकालिक जावास्क्रिप्ट विधि है जिसमें दो तर्क होते हैं: एक फ़ंक्शन और एक विलंब। देरी एक टाइमर (मिलीसेकंड में) है, जो फ़ंक्शन के निष्पादन में देरी करता है। इसलिए, जबकि उपरोक्त प्रोग्राम फंक्शन को निष्पादित करने के लिए तीन सेकंड की प्रतीक्षा कर रहा है सेटटाइमआउट () विधि, यह कोड में अगली पंक्ति पर जाता है। इसका परिणाम दूसरे से पहले तीसरे फ़ंक्शन कॉल के निष्पादन में होता है।
एसिंक्रोनस जावास्क्रिप्ट टेक्नोलॉजीज
इससे अलग सेटटाइमआउट () ऊपर वर्णित विधि, कई जावास्क्रिप्ट प्रौद्योगिकियां एसिंक्रोनस प्रोग्रामिंग का उपयोग करती हैं। ये प्रौद्योगिकियां तेजी से गैर-अवरुद्ध अनुप्रयोगों को विकसित करने के लिए एसिंक्रोनस प्रोग्रामिंग मॉडल का उपयोग करती हैं। इनमें से कुछ तकनीकों में शामिल हैं:
- jQuery अजाक्स
- एक्सिओस
- नोडजेएस
संबंधित: Node.js क्या है? यहां बताया गया है कि सर्वर-साइड जावास्क्रिप्ट का उपयोग कैसे करें
जावास्क्रिप्ट के साथ एसिंक्रोनस प्रोग्राम बनाना
एसिंक्रोनस कोड को संभालने के कई तरीके हैं। आपके द्वारा चुनी गई विधि उस एप्लिकेशन के प्रकार पर निर्भर होनी चाहिए जिसे आप विकसित करना चाहते हैं। इन विधियों में कॉलबैक फ़ंक्शन, वादे और async/प्रतीक्षा शामिल हैं।
कॉलबैक फ़ंक्शंस
कॉलबैक फ़ंक्शन के दो महत्वपूर्ण गुण हैं। वे अन्य कार्यों के लिए पैरामीटर के रूप में कार्य करते हैं, और वे अपने कर्तव्य को पूरा करने के लिए बाहरी घटनाओं पर भरोसा करते हैं। सेटटाइमआउट () उपरोक्त एसिंक्रोनस उदाहरण में उपयोग की जाने वाली विधि कॉलबैक फ़ंक्शन है। प्रोग्राम इसे एक पैरामीटर (कॉलबैक फ़ंक्शन) के रूप में एक लॉग फ़ंक्शन पास करता है, और इसे केवल तीन सेकंड (ईवेंट) के बाद निष्पादित करता है।
छोटे कार्यक्रमों के लिए कॉलबैक फ़ंक्शन बहुत अच्छे हैं, लेकिन जैसे-जैसे आपके एप्लिकेशन बढ़ते हैं, वे बहुत जल्दी जटिल हो सकते हैं। ऐसा इसलिए है क्योंकि कॉलबैक फ़ंक्शन अक्सर अन्य कॉलबैक फ़ंक्शन को कॉल करते हैं, नेस्टेड कॉलबैक की एक श्रृंखला बनाते हैं।
वादों का उपयोग करना
जावास्क्रिप्ट ने कॉलबैक फ़ंक्शंस के बाद वादों के लिए समर्थन जोड़ा। बड़े एप्लिकेशन बनाते समय वे एक अच्छा विकल्प होते हैं। एक वादा दर्शाता है कि एसिंक्रोनस ऑपरेशन के बाद क्या हो सकता है। यह संभावित परिणाम दो रूपों में से एक लेगा: हल किया या अस्वीकृत. नेस्टिंग (कॉलबैक फ़ंक्शन समस्या) की आवश्यकता को दूर करते हुए, एक अलग फ़ंक्शन इन परिणामों में से प्रत्येक को संभालता है। इसके बजाय, वादे श्रृंखला के कार्यों को प्रोत्साहित करते हैं जो उपयोग में आसान होते हैं।
हर वादे की शुरुआत एक नए से होती है वादा वह वस्तु जिसके पास एक अनाम कार्य है संकल्प तथा अस्वीकार पैरामीटर। इस फ़ंक्शन के भीतर, आपके पास एसिंक्रोनस एप्लिकेशन होगा, जो एसिंक्रोनस ऑपरेशन सफल होने पर एक संकल्प देता है, या अन्यथा अस्वीकार करता है।
फिर() श्रृंखला समारोह संभालती है संकल्प समारोह, और पकड़() श्रृंखला समारोह संभालती है अस्वीकार समारोह। इसलिए, नेस्टेड if स्टेटमेंट की कोई आवश्यकता नहीं है, जैसा कि कॉलबैक फ़ंक्शन के मामले में होता है।
वादों के उदाहरण का उपयोग करना
कॉन्स्ट प्रॉमिसफंक्शन = () => {
नया वादा वापस करें ((संकल्प करें, अस्वीकार करें) => {
सेटटाइमआउट (() => {
संकल्प ("यह अतुल्यकालिक ऑपरेशन अच्छी तरह से निष्पादित")
}, 3000)
})
}
प्रॉमिसफंक्शन ()। तब ((परिणाम) => {
कंसोल.लॉग ("सफलता", परिणाम)
}).कैच ((त्रुटि) => {
कंसोल.लॉग ("त्रुटि", त्रुटि)
})
उपरोक्त कोड कंसोल में निम्न आउटपुट देता है:
इस एसिंक्रोनस ऑपरेशन को सफलतापूर्वक निष्पादित किया गया
ऐसा इसलिए है क्योंकि वादा वापस करता है संकल्प फ़ंक्शन, जो इसके परिणामों को पास करता है फिर() समारोह। अगर वादा वापस करता है अस्वीकार समारोह कार्यक्रम का उपयोग करता है पकड़ इसके बजाय कार्य करें।
Async/प्रतीक्षा का उपयोग करना
यदि आप एसिंक्रोनस ऑपरेशंस से निपटने के दौरान वादा श्रृंखला नहीं बनाना चाहते हैं, तो आप एसिंक/प्रतीक्षा का प्रयास कर सकते हैं। Async/प्रतीक्षा वादों से पूरी तरह से अलग अतुल्यकालिक उपकरण नहीं है, बस उन्हें संभालने का एक अलग तरीका है। यह श्रृंखला पद्धति का उपयोग किए बिना वादों को संभालता है। इसलिए, जिस तरह से वादे अतुल्यकालिक संचालन को कॉलबैक फ़ंक्शंस से बेहतर तरीके से संभालते हैं, उसी तरह से async/प्रतीक्षा में सादे वादों पर लाभ होता है।
प्रत्येक async/प्रतीक्षा फ़ंक्शन की दो प्रमुख विशेषताएँ होती हैं। वे से शुरू करते हैं अतुल्यकालिक कीवर्ड, और इंतजार कीवर्ड एसिंक्रोनस ऑपरेशन के परिणाम की प्रतीक्षा करता है।
Async/प्रतीक्षा कार्यक्रम उदाहरण
कॉन्स्ट प्रॉमिसफंक्शन = () => {
नया वादा वापस करें ((संकल्प करें, अस्वीकार करें) => {
सेटटाइमआउट (() => {
संकल्प ("यह अतुल्यकालिक ऑपरेशन अच्छी तरह से निष्पादित")
}, 3000)
})
}const AsyncAwaitFunc = async () => {
कास्ट परिणाम = प्रॉमिसफंक्शन का इंतजार ();
कंसोल.लॉग (परिणाम);
}
AsyncAwaitFunc ();
उपरोक्त कोड कंसोल में निम्न आउटपुट लौटाएगा:
इस अतुल्यकालिक ऑपरेशन को अच्छी तरह से निष्पादित किया गया
प्रमुख Takeaways क्या हैं?
इस लेख से आपको कई प्रमुख बिंदु लेने चाहिए:
- एसिंक्रोनस प्रोग्रामिंग मूल्यवान है क्योंकि यह प्रोग्राम के प्रतीक्षा समय को कम करता है, तेज एप्लिकेशन बनाता है।
- कॉलबैक फ़ंक्शन सिंक्रोनस या एसिंक्रोनस हो सकता है।
- वादे कॉलबैक फ़ंक्शंस की तुलना में एसिंक्रोनस ऑपरेशंस को संभालने का एक बेहतर तरीका प्रदान करते हैं।
- Async/प्रतीक्षा फ़ंक्शन चेन फ़ंक्शंस का उपयोग करने की तुलना में वादों को बेहतर तरीके से संभालते हैं।
- एक एसिंक्स/प्रतीक्षा फ़ंक्शन एसिंक्रोनस ऑपरेशंस को इस तरह से संभालता है जो सिंक्रोनस दिखता है, जिससे इसे समझना आसान हो जाता है।
- एरो फंक्शन आपको बेहतर कोड लिखने में मदद करते हैं।
वेब विकास में बेहतर बनना चाहते हैं? JavaScript ES6 में जोड़े गए एरो फ़ंक्शन, आपको वेब ऐप्स के लिए फ़ंक्शन बनाने के दो तरीके प्रदान करते हैं।
आगे पढ़िए
- प्रोग्रामिंग
- प्रोग्रामिंग
- जावास्क्रिप्ट
कदीशा कीन एक पूर्ण-स्टैक सॉफ़्टवेयर डेवलपर और तकनीकी/प्रौद्योगिकी लेखक हैं। उसके पास कुछ सबसे जटिल तकनीकी अवधारणाओं को सरल बनाने की विशिष्ट क्षमता है; उत्पादन सामग्री जिसे किसी भी तकनीकी नौसिखिए द्वारा आसानी से समझा जा सकता है। उसे लिखने, दिलचस्प सॉफ्टवेयर विकसित करने और दुनिया की यात्रा (वृत्तचित्रों के माध्यम से) करने का शौक है।
हमारे न्यूज़लेटर की सदस्यता लें
तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!
सब्सक्राइब करने के लिए यहां क्लिक करें