TypeScript में एसिंक्रोनस प्रोग्रामिंग: एक संपूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

TypeScript में एसिंक्रोनस प्रोग्रामिंग: शुरुआती के लिए संपूर्ण गाइड

\n\n

एसिंक्रोनस प्रोग्रामिंग आधुनिक वेब डेवलपमेंट में एक प्रमुख अवधारणा है। यदि आप अभी TypeScript सीखना शुरू कर रहे हैं, तो एसिंक्रोनस कोड के साथ काम करने की समझ आपके लिए तेज़ और उत्तरदायी एप्लिकेशन बनाने की संभावनाएं खोल देगी। इस गाइड में, हम TypeScript में एसिंक्रोनस प्रोग्रामिंग की मूल बातें समझेंगे: सरल कॉलबैक से लेकर आधुनिक async/await तक, TypeScript द्वारा प्रदान की गई सख्त टाइपिंग पर विशेष जोर देते हुए।

\n\n

एसिंक्रोनस प्रोग्रामिंग क्या है और इसकी आवश्यकता क्यों है?

\n\n

सिंक्रोनस प्रोग्रामिंग में, कोड क्रमिक रूप से निष्पादित होता है: प्रत्येक अगला ऑपरेशन पिछले ऑपरेशन के पूरा होने की प्रतीक्षा करता है। यदि, उदाहरण के लिए, सर्वर से डेटा लोड करने की आवश्यकता होती है, तो इससे इंटरफ़ेस "फ्रीज़" हो सकता है। एसिंक्रोनस प्रोग्रामिंग लंबे ऑपरेशन (API अनुरोध, फ़ाइल पढ़ना, टाइमर) को मुख्य निष्पादन थ्रेड को ब्लॉक किए बिना, पृष्ठभूमि में चलाने की अनुमति देती है। TypeScript, JavaScript के ऊपर एक परत होने के नाते, एसिंक्रोनस पैटर्न को पूरी तरह से सपोर्ट करता है और उनमें एक शक्तिशाली टाइप सिस्टम जोड़ता है।

\n\n

Promise: TypeScript में एसिंक्रोनसिटी का आधार

\n\n

Promise एक ऑब्जेक्ट है जो किसी एसिंक्रोनस ऑपरेशन के परिणाम का प्रतिनिधित्व करता है, जो तीन अवस्थाओं में से एक में हो सकता है: pending (प्रतीक्षा), fulfilled (सफलतापूर्वक पूर्ण) या rejected (त्रुटि के साथ पूर्ण)। TypeScript में, हम उस डेटा के प्रकार को निर्दिष्ट कर सकते हैं जो प्रॉमिस वापस करेगा, जिससे कोड अधिक पूर्वानुमानित हो जाता है।

\n\n

टाइपिंग के साथ Promise बनाने का उदाहरण:

\n\n
// फ़ंक्शन जो string प्रकार के साथ Promise लौटाता है\nfunction fetchUserData(userId: number): Promise<string> {\n    return new Promise((resolve, reject) => {\n        setTimeout(() => {\n            if (userId > 0) {\n                resolve(`आईडी ${userId} वाले उपयोगकर्ता का डेटा`);\n            } else {\n                reject(new Error("अमान्य उपयोगकर्ता आईडी"));\n            }\n        }, 1000);\n    });\n}\n\n// Promise का उपयोग\nfetchUserData(123)\n    .then((data: string) => {\n        console.log(data); // "आईडी 123 वाले उपयोगकर्ता का डेटा"\n    })\n    .catch((error: Error) => {\n        console.error(error.message);\n    });
\n\n

ध्यान दें: हमने स्पष्ट रूप से निर्दिष्ट किया है कि प्रॉमिस string लौटाता है, और .then() में पैरामीटर data का प्रकार भी string है। यह कंपाइलेशन चरण में त्रुटियों से बचने में मदद करता है।

\n\n

Promise चेन और त्रुटि प्रबंधन

\n\n

प्रॉमिस को चेन में जोड़ा जा सकता है, एक एसिंक्रोनस ऑपरेशन के परिणाम को दूसरे में पास करके। TypeScript प्रत्येक चरण पर स्वचालित रूप से प्रकारों का अनुमान लगाएगा।

\n\n

Promise चेन का उदाहरण:

\n\n
interface User {\n    id: number;\n    name: string;\n}\n\nfunction getUser(id: number): Promise<User> {\n    return new Promise((resolve) => {\n        setTimeout(() => resolve({ id, name: "अन्ना" }), 500);\n    });\n}\n\nfunction getPosts(userId: number): Promise<string[]> {\n    return new Promise((resolve) => {\n        setTimeout(() => resolve(["पोस्ट 1", "पोस्ट 2"]), 500);\n    });\n}\n\n// कॉल की चेन\ngetUser(1)\n    .then((user: User) => {\n        console.log(`उपयोगकर्ता: ${user.name}`);\n        return getPosts(user.id); // नया Promise लौटाएं\n    })\n    .then((posts: string[]) => {\n        console.log(`पोस्ट: ${posts.join(", ")}`);\n    })\n    .catch((error: Error) => {\n        console.error("त्रुटि:", error.message);\n    });
\n\n

यदि किसी भी चरण में कोई त्रुटि होती है, तो निष्पादन निकटतम .catch() पर चला जाएगा। यह केंद्रीकृत त्रुटि प्रबंधन है - कॉलबैक की तुलना में प्रॉमिस का एक मुख्य लाभ।

\n\n

Async/await: एसिंक्रोनसिटी का सुरुचिपूर्ण सिंटैक्स

\n\n

async/await सिंटैक्स एसिंक्रोनस कोड को सिंक्रोनस जैसा बनाता है, जिससे इसे पढ़ना आसान हो जाता है

ब्लॉग

पुस्तक अनुशंसाएँ