JavaScript में Async/await
इस लेख में, हम JavaScript में async/await को समझाएंगे।
YouTube Video
JavaScript में Async/await
JavaScript में async
(और await
) ऐसी सुविधाएं हैं जिन्हें असिंक्रोनस ऑपरेशंस को अधिक सहज और पढ़ने योग्य बनाने के लिए डिज़ाइन किया गया है। इसका उपयोग करके, आप पारंपरिक कॉलबैक फ़ंक्शनों और Promise
चेनों की जटिलता को कम कर सकते हैं, और असिंक्रोनस कोड को इस तरह लिख सकते हैं कि वह सिंक्रोनस कोड जैसा दिखाई दे।
async
फ़ंक्शन
async
का उपयोग एक फ़ंक्शन को असिंक्रोनस फ़ंक्शन के रूप में परिभाषित करने के लिए किया जाता है। एक async
फ़ंक्शन हमेशा एक Promise लौटाता है। async
चिह्नित फ़ंक्शन के अंदर, आप किसी Promise के परिणाम का इंतजार करने के लिए await
का उपयोग कर सकते हैं।
async
फ़ंक्शन की बुनियादी सिंटैक्स
1async function myAsyncFunction() {
2 // Write asynchronous processing here
3 return 'Result'; // Return a Promise
4}
इस मामले में, myAsyncFunction()
को कॉल करने पर स्वचालित रूप से एक Promise ऑब्जेक्ट लौटाया जाता है। जब Promise हल हो जाता है, तो उसका परिणाम return
द्वारा लौटाई गई मान बन जाता है।
उदाहरण: बुनियादी async
फ़ंक्शन
1async function greet() {
2 return 'Hello, World!';
3}
4
5greet().then((message) => {
6 console.log(message); // Displays "Hello, World!"
7});
await
await
का उपयोग Promise के हल होने का इंतजार करने के लिए किया जाता है। await
का उपयोग करके, आप निष्पादन को रोक सकते हैं जब तक कि Promise हल न हो जाए, और Promise का परिणाम प्राप्त कर सकते हैं। await
का उपयोग केवल async
फ़ंक्शन के अंदर ही किया जा सकता है।
उदाहरण: await
का उपयोग कैसे करें
1async function fetchData() {
2 // Wait for the result of the Promise
3 const data = await fetch('https://codesparklab.com/json/example.json');
4 // Wait for the asynchronous operation to complete
5 const jsonData = await data.json();
6 // Retrieve and display the data
7 console.log(jsonData);
8}
9
10fetchData();
उपरोक्त उदाहरण में, यह await
का उपयोग करके fetch
फ़ंक्शन द्वारा लौटाए गए Promise का इंतजार करता है, और फिर परिणाम का उपयोग करके आगे की असिंक्रोनस ऑपरेशंस करता है।
async
/await
के साथ त्रुटि संभालना
यदि किसी async
फ़ंक्शन के अंदर कोई त्रुटि होती है, तो उस त्रुटि को Promise के reject
के रूप में माना जाता है। आप त्रुटियों को संभालने के लिए try...catch
कथनों का उपयोग कर सकते हैं।
उदाहरण: त्रुटि संभालना
1async function fetchData() {
2 try {
3 // Invalid URL
4 const data = await fetch('https://api.invalid-url.com/data');
5 const jsonData = await data.json();
6 console.log(jsonData);
7 } catch (error) {
8 // Catch the error
9 console.error('Failed to fetch data:', error);
10 }
11}
12
13fetchData();
try...catch
ब्लॉक का उपयोग करके, आप असिंक्रोनस ऑपरेशंस के दौरान होने वाली त्रुटियों को पकड़ सकते हैं, और इन त्रुटियों के होने पर प्रोग्राम को क्रैश होने से रोक सकते हैं।
async
/await
के लाभ
पारंपरिक Promise
चेनों की तुलना में, async
/await
निम्नलिखित लाभ प्रदान करता है:।
- बेहतर पठनीयता
- असिंक्रोनस प्रोसेसिंग को सिंक्रोनस कोड की तरह लिखा जा सकता है, जिससे गहराई से नेस्टेड
Promise
चेनों और कॉलबैक की जटिलता से बचा जा सकता है।
- असिंक्रोनस प्रोसेसिंग को सिंक्रोनस कोड की तरह लिखा जा सकता है, जिससे गहराई से नेस्टेड
- आसान डिबगिंग
- चूंकि यह सिंक्रोनस कोड जैसा लगता है, इसलिए डिबगिंग और त्रुटि हैंडलिंग आसान हो जाती है।
- बेहतर अनुरक्षणीयता
- असिंक्रोनस प्रक्रियाओं को अधिक सरलता से लिखा जा सकता है, जिससे कोड को बदलना या संशोधित करना आसान हो जाता है और दीर्घकालिक अनुरक्षणीयता में सुधार होता है।
उदाहरण: Promise
चेन बनाम async
/await
आइए Promise
चेन के साथ लिखे गए कोड और async
/await
के साथ लिखे गए कोड की तुलना करें।
1// Code using Promise chains
2function fetchDataPromise() {
3 fetch('https://codesparklab.com/json/example.json')
4 .then((response) => response.json())
5 .then((data) => {
6 console.log(data);
7 })
8 .catch((error) => {
9 console.error('Failed to fetch data:', error);
10 });
11}
12
13// Code using async/await
14async function fetchDataAsync() {
15 try {
16 const response = await fetch('https://codesparklab.com/json/example.json');
17 const data = await response.json();
18 console.log(data);
19 } catch (error) {
20 console.error('Failed to fetch data:', error);
21 }
22}
जैसा कि आप देख सकते हैं, async
/await
का उपयोग करके आप असिंक्रोनस प्रक्रियाओं को रैखिक रूप में लिख सकते हैं, जिससे कोड अधिक पठनीय बनता है।
एक साथ कई असिंक्रोनस ऑपरेशन्स निष्पादित करें।
Promise.all()
या Promise.race()
को await
के साथ संयोजित करके, आप एक साथ कई असिंक्रोनस ऑपरेशन्स निष्पादित कर सकते हैं और उनके परिणाम सामूहिक रूप से संभाल सकते हैं।
उदाहरण: एक साथ कई असिंक्रोनस ऑपरेशन्स निष्पादित करना।
1async function fetchMultipleData() {
2 try {
3 const [data1, data2] = await Promise.all([
4 fetch('https://codesparklab.com/json/example1.json'),
5 fetch('https://codesparklab.com/json/example2.json')
6 ]);
7 const jsonData1 = await data1.json();
8 const jsonData2 = await data2.json();
9 console.log(jsonData1, jsonData2);
10 } catch (error) {
11 console.error('Failed to fetch data:', error);
12 }
13}
14
15fetchMultipleData();
Promise.all()
एक साथ कई प्रॉमिस को हल करता है और उनके परिणामों को एक एरे के रूप में लौटाता है। यह सभी प्रॉमिस के हल होने का इंतजार करता है, और यदि उनमें से कोई भी विफल होता है, तो इसे समग्र रूप से विफलता माना जाता है।
सारांश
async
फ़ंक्शन: हमेशा एक प्रॉमिस लौटाता है और इसका उपयोग असिंक्रोनस प्रोसेसिंग लिखने के लिए किया जाता है।await
: किसी प्रॉमिस के हल होने और उसके परिणाम को प्राप्त करने के लिए उपयोग किया जाता है।- त्रुटि प्रबंधन: असिंक्रोनस प्रोसेसिंग के दौरान होने वाली त्रुटियों को संभालने के लिए
try...catch
का उपयोग करें। - कई असिंक्रोनस ऑपरेशन्स: आप
Promise.all()
का उपयोग करके एक साथ कई असिंक्रोनस ऑपरेशन्स निष्पादित कर सकते हैं।
async
/await
असिंक्रोनस प्रोसेसिंग को संभालने के लिए शक्तिशाली उपकरण हैं, इसलिए जटिल असिंक्रोनस लॉजिक को सरल बनाने के लिए उनका उपयोग करना सुनिश्चित करें।
आप हमारे YouTube चैनल पर Visual Studio Code का उपयोग करके ऊपर दिए गए लेख के साथ आगे बढ़ सकते हैं। कृपया YouTube चैनल को भी देखें।