𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗦𝘆𝗻𝗰𝗵𝗿𝗼𝗻𝗼𝘂𝘀 𝗮𝗻𝗱 𝗔𝘀𝘆𝗻𝗰𝗵𝗿𝗼𝗻𝗼𝘂𝘀
JavaScript एक सिंगल थ्रेड (single thread) पर चलता है। इसका मतलब है कि यह एक समय में एक ही चीज़ को निष्पादित (execute) करता है। कुशल कोड लिखने के लिए आपको यह समझना होगा कि यह कार्यों (tasks) को कैसे संभालता है।
Synchronous JavaScript
Synchronous कोड लाइन दर लाइन चलता है। प्रत्येक कार्य पिछले कार्य के समाप्त होने की प्रतीक्षा करता है। इसे blocking कहा जाता है। यदि एक कार्य में लंबा समय लगता है, तो पूरा प्रोग्राम रुक जाता है।
- Execution: निश्चित क्रम (Fixed sequence)।
- Blocking: हाँ।
- Complexity: सरल।
- Best for: सरल, क्रमिक कार्य (sequential tasks)।
Asynchronous JavaScript
Asynchronous कोड स्वतंत्र रूप से चलता है। कार्य प्रतीक्षा करते समय अन्य कोड को ब्लॉक नहीं करते हैं। इसे non-blocking कहा जाता है। कार्य बैकग्राउंड में शुरू होता है और समाप्त होने पर आपको सूचित करता है।
- Execution: कार्य स्वतंत्र रूप से चलते हैं।
- Blocking: नहीं।
- Complexity: अधिक।
- Best for: API calls, timers, और फ़ाइल ऑपरेशन्स (file operations)।
Asynchronous कार्यों को संभालने के तीन तरीके:
- Callbacks: एक फ़ंक्शन जो कार्य समाप्त होने के बाद चलता है।
- Promises: एक ऑब्जेक्ट जो किसी ऑपरेशन के पूरा होने या विफल होने का प्रतिनिधित्व करता है।
- Async/Await: सबसे स्वच्छ तरीका। यह थ्रेड को ब्लॉक किए बिना asynchronous कोड को synchronous कोड की तरह दिखाता है।
सामान्य asynchronous ऑपरेशन्स:
- Timers:
setTimeout() - API calls:
fetch() - File reading:
readFile() - User events:
addEventListener()
Event Loop इसे संभव बनाता है। यह एक साथ कई कार्यों को प्रबंधित करने के लिए Call Stack, Web APIs, और Callback Queue का उपयोग करता है।
Summary:
- Synchronous: एक के बाद एक। Execution को ब्लॉक करता है।
- Asynchronous: स्वतंत्र कार्य। ब्लॉक नहीं करता है।
- JavaScript default: Synchronous।
Source: https://www.geeksforgeeks.org/javascript/synchronous-and-asynchronous-in-javascript/ Source: https://www.w3schools.com/js/js_asynchronous.asp Source: https://medium.com/@mohdtalib.dev/what-is-synchronous-and-asynchronous-in-javascript-07adb7b4cc5f
Full post: https://dev.to/raja_b_0c9d242e2c26cf063b/javascript-synchronous-and-asynchronous-2a69