W3Schools - JavaScript Async/Await
- जावास्क्रिप्ट Async/Await
Async/Await जावास्क्रिप्ट में एसिंक्रोनस (Asynchronous) कोड लिखने का एक आधुनिक तरीका है। यह कोड को अधिक पठनीय और समझने में आसान बनाता है, खासकर जब आप कई एसिंक्रोनस ऑपरेशन एक के बाद एक करना चाहते हैं। Async/Await, प्रॉमिस (Promises) पर आधारित है और प्रॉमिस के साथ काम करने की तुलना में अक्सर अधिक सरल और स्वाभाविक लगता है। यह लेख आपको Async/Await की मूलभूत अवधारणाओं, उपयोग और फायदों को समझने में मदद करेगा।
Async/Await क्या है?
एसिंक्रोनस प्रोग्रामिंग में, कुछ ऑपरेशन (जैसे नेटवर्क अनुरोध, फाइल पढ़ना, या टाइमर) तुरंत पूरे नहीं होते हैं। ये ऑपरेशन समय लेते हैं, और प्रोग्राम को उनके पूरा होने का इंतजार करते समय अन्य कार्य करने की आवश्यकता होती है। पारंपरिक रूप से, जावास्क्रिप्ट में एसिंक्रोनस कोड को कॉलबैक (Callbacks) और फिर प्रॉमिस (Promises) का उपयोग करके संभाला जाता था।
Async/Await इन दोनों दृष्टिकोणों को सरल बनाता है।
- **Async:** `async` कीवर्ड एक फंक्शन को एसिंक्रोनस फंक्शन बनाता है। एसिंक्रोनस फंक्शन हमेशा एक प्रॉमिस लौटाता है। यदि फंक्शन स्पष्ट रूप से कोई प्रॉमिस लौटाता है, तो उसे लौटाया जाएगा। यदि नहीं, तो फंक्शन के रिटर्न वैल्यू को एक प्रॉमिस में लपेटा जाएगा जो उस वैल्यू को रिजॉल्व (resolve) करता है।
- **Await:** `await` कीवर्ड केवल एसिंक्रोनस फंक्शन के अंदर ही इस्तेमाल किया जा सकता है। यह एक प्रॉमिस के रिजॉल्व होने का इंतजार करता है, और फिर रिजॉल्व वैल्यू को लौटाता है। `await` का उपयोग करने के दौरान, एसिंक्रोनस फंक्शन तब तक रुक जाता है जब तक कि प्रॉमिस रिजॉल्व नहीं हो जाता।
Async फंक्शन कैसे लिखें?
एक एसिंक्रोनस फंक्शन को परिभाषित करने के लिए, `async` कीवर्ड का उपयोग करें। उदाहरण के लिए:
```javascript async function myFunction() {
// एसिंक्रोनस कोड यहां लिखें
} ```
यह फंक्शन हमेशा एक प्रॉमिस लौटाएगा, भले ही आप स्पष्ट रूप से कोई प्रॉमिस न लौटाएं।
Await कैसे उपयोग करें?
`await` कीवर्ड का उपयोग केवल एसिंक्रोनस फंक्शन के अंदर किया जा सकता है। यह एक प्रॉमिस के रिजॉल्व होने का इंतजार करता है, और फिर रिजॉल्व वैल्यू को लौटाता है। उदाहरण के लिए:
```javascript async function myFunction() {
const result = await somePromise; console.log(result);
} ```
इस उदाहरण में, `myFunction` `somePromise` के रिजॉल्व होने का इंतजार करेगा। जब `somePromise` रिजॉल्व हो जाएगा, तो रिजॉल्व वैल्यू को `result` वेरिएबल में असाइन कर दिया जाएगा, और फिर कंसोल में लॉग किया जाएगा।
उदाहरण: नेटवर्क अनुरोध
Async/Await का उपयोग नेटवर्क अनुरोधों को संभालने के लिए बहुत उपयोगी है। उदाहरण के लिए, आप `fetch` API का उपयोग करके एक API से डेटा प्राप्त कर सकते हैं:
```javascript async function getData(url) {
try { const response = await fetch(url); const data = await response.json(); return data; } catch (error) { console.error("Error fetching data:", error); throw error; // त्रुटि को आगे बढ़ाना }
}
// उपयोग getData("https://jsonplaceholder.typicode.com/todos/1")
.then(data => console.log(data)) .catch(error => console.error("Error handling data:", error));
```
इस उदाहरण में, `getData` फंक्शन एक URL लेता है और उस URL से डेटा प्राप्त करता है। `await fetch(url)` `fetch` प्रॉमिस के रिजॉल्व होने का इंतजार करता है, और फिर रिस्पांस ऑब्जेक्ट को `response` वेरिएबल में असाइन कर देता है। `await response.json()` रिस्पांस बॉडी को JSON के रूप में पार्स करने के लिए प्रॉमिस के रिजॉल्व होने का इंतजार करता है, और फिर पार्स किए गए डेटा को `data` वेरिएबल में असाइन कर देता है।
त्रुटि हैंडलिंग
Async/Await के साथ त्रुटि हैंडलिंग `try...catch` ब्लॉक का उपयोग करके की जाती है। यह प्रॉमिस के `.catch()` मेथड का उपयोग करने की तुलना में अधिक पठनीय और सीधा है।
```javascript async function myFunction() {
try { const result = await somePromise; console.log(result); } catch (error) { console.error("An error occurred:", error); }
} ```
इस उदाहरण में, `try` ब्लॉक में एसिंक्रोनस कोड होता है। यदि `somePromise` रिजेक्ट हो जाता है, तो `catch` ब्लॉक निष्पादित किया जाएगा, और त्रुटि को कंसोल में लॉग किया जाएगा।
Async/Await के फायदे
- **पठनीयता:** Async/Await कोड को अधिक पठनीय और समझने में आसान बनाता है, खासकर जब आप कई एसिंक्रोनस ऑपरेशन एक के बाद एक करना चाहते हैं।
- **सरलता:** Async/Await प्रॉमिस के साथ काम करने की तुलना में अक्सर अधिक सरल और स्वाभाविक लगता है।
- **त्रुटि हैंडलिंग:** Async/Await के साथ त्रुटि हैंडलिंग `try...catch` ब्लॉक का उपयोग करके की जाती है, जो प्रॉमिस के `.catch()` मेथड का उपयोग करने की तुलना में अधिक पठनीय और सीधा है।
- **डीबगिंग:** Async/Await कोड को डीबग करना आसान होता है क्योंकि यह सिंक्रोनस कोड की तरह दिखता है।
Async/Await का उपयोग कब करें?
Async/Await का उपयोग तब करें जब आप:
- एसिंक्रोनस कोड को अधिक पठनीय और समझने में आसान बनाना चाहते हैं।
- प्रॉमिस के साथ काम करने की तुलना में अधिक सरल और स्वाभाविक तरीका चाहते हैं।
- एसिंक्रोनस कोड में त्रुटि हैंडलिंग को सरल बनाना चाहते हैं।
- एसिंक्रोनस कोड को डीबग करना आसान बनाना चाहते हैं।
Async/Await और प्रॉमिस
Async/Await प्रॉमिस पर आधारित है। Async/Await का उपयोग करने से पहले, प्रॉमिस (Promises) की मूलभूत अवधारणाओं को समझना महत्वपूर्ण है। Async/Await प्रॉमिस के साथ काम करने का सिर्फ एक अलग तरीका है।
Async/Await और कॉलबैक
Async/Await कॉलबैक (Callbacks) की तुलना में एसिंक्रोनस कोड को संभालने का एक बेहतर तरीका है। कॉलबैक "कॉलबैक हेल" नामक समस्या का कारण बन सकते हैं, जहां कोड को पढ़ना और समझना मुश्किल हो जाता है। Async/Await इस समस्या को हल करता है।
Parallel Execution (समानांतर निष्पादन)
Async/Await डिफ़ॉल्ट रूप से क्रमिक रूप से एसिंक्रोनस ऑपरेशन निष्पादित करता है। यदि आप कई एसिंक्रोनस ऑपरेशन को समानांतर में निष्पादित करना चाहते हैं, तो आप `Promise.all()` का उपयोग कर सकते हैं।
```javascript async function parallelExecution() {
const promise1 = getData("https://jsonplaceholder.typicode.com/todos/1"); const promise2 = getData("https://jsonplaceholder.typicode.com/posts/1");
const [data1, data2] = await Promise.all([promise1, promise2]);
console.log(data1); console.log(data2);
} ```
इस उदाहरण में, `getData` फंक्शन दो अलग-अलग URL से डेटा प्राप्त करने के लिए बुलाया जाता है। `Promise.all()` दोनों प्रॉमिस के रिजॉल्व होने का इंतजार करता है, और फिर रिजॉल्व वैल्यू को एक एरे में लौटाता है।
वास्तविक दुनिया के उदाहरण
Async/Await का उपयोग कई वास्तविक दुनिया के अनुप्रयोगों में किया जा सकता है, जैसे:
- **वेब एप्लिकेशन:** API से डेटा प्राप्त करना, उपयोगकर्ता इनपुट को संसाधित करना, और UI को अपडेट करना।
- **सर्वर-साइड एप्लिकेशन:** डेटाबेस से डेटा प्राप्त करना, फाइल सिस्टम से डेटा पढ़ना, और अन्य सर्वर को अनुरोध भेजना।
- **कमांड-लाइन उपकरण:** नेटवर्क अनुरोध करना, फाइल सिस्टम से डेटा पढ़ना, और अन्य कमांड-लाइन उपकरण चलाना।
Async Iterator
Async Iterator एक ऐसा इंटरफ़ेस है जो एसिंक्रोनस डेटा स्ट्रीम को संभालने की अनुमति देता है। Async Iterator का उपयोग करके, आप एसिंक्रोनस तरीके से डेटा के एक क्रम पर पुनरावृति कर सकते हैं।
```javascript async function* generateNumbers() {
let i = 0; while (true) { yield i++; await new Promise(resolve => setTimeout(resolve, 1000)); // 1 सेकंड प्रतीक्षा करें }
}
async function consumeNumbers() {
for await (const number of generateNumbers()) { console.log(number); }
}
consumeNumbers(); ```
Async Generator
Async Generator एक ऐसा फंक्शन है जो Async Iterator लौटाता है। Async Generator का उपयोग करके, आप एसिंक्रोनस डेटा स्ट्रीम उत्पन्न कर सकते हैं।
निष्कर्ष
Async/Await जावास्क्रिप्ट में एसिंक्रोनस कोड लिखने का एक शक्तिशाली और सुविधाजनक तरीका है। यह कोड को अधिक पठनीय, समझने में आसान और बनाए रखने योग्य बनाता है। यदि आप जावास्क्रिप्ट में एसिंक्रोनस प्रोग्रामिंग कर रहे हैं, तो Async/Await का उपयोग करने पर विचार करें।
संबंधित विषय
- JavaScript
- प्रॉमिस (Promises)
- कॉलबैक (Callbacks)
- fetch API
- try...catch
- Error Handling
- JavaScript में एसिंक्रोनस प्रोग्रामिंग
- Event Loop
- JavaScript में मेमोरी प्रबंधन
- Closures
- Hoisting
- Prototypal Inheritance
- Object-Oriented Programming in JavaScript
- Data Structures and Algorithms
- JavaScript Security
- Technical Analysis
- Volume Analysis
- Trading Strategies
- Risk Management
- Binary Options Trading
- Financial Markets
अभी ट्रेडिंग शुरू करें
IQ Option पर रजिस्टर करें (न्यूनतम जमा $10) Pocket Option में खाता खोलें (न्यूनतम जमा $5)
हमारे समुदाय में शामिल हों
हमारे Telegram चैनल @strategybin से जुड़ें और प्राप्त करें: ✓ दैनिक ट्रेडिंग सिग्नल ✓ विशेष रणनीति विश्लेषण ✓ बाजार की प्रवृत्ति पर अलर्ट ✓ शुरुआती के लिए शिक्षण सामग्री