𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗦𝘆𝗻𝗰𝗵𝗿𝗼𝗻𝗼𝘂𝘀 𝗮𝗻𝗱 𝗔𝘀𝘆𝗻𝗰𝗵𝗿𝗼𝗻𝗼𝘂𝘀
JavaScript ایک single thread پر چلتی ہے۔ اس کا مطلب ہے کہ یہ ایک وقت میں ایک ہی کام کرتی ہے۔ موثر کوڈ لکھنے کے لیے آپ کو یہ سمجھنا ضروری ہے کہ یہ ٹاسک (tasks) کو کیسے ہینڈل کرتی ہے۔
Synchronous JavaScript
Synchronous کوڈ لائن بہ لائن چلتا ہے۔ ہر ٹاسک پچھلے ٹاسک کے مکمل ہونے کا انتظار کرتا ہے۔ اسے blocking کہا جاتا ہے۔ اگر ایک ٹاسک میں زیادہ وقت لگے تو پورا پروگرام رک جاتا ہے۔
- Execution: مقررہ ترتیب (Fixed sequence)۔
- Blocking: جی ہاں۔
- Complexity: سادہ۔
- Best for: سادہ اور ترتیب وار ٹاسکس کے لیے۔
Asynchronous JavaScript
Asynchronous کوڈ آزادانہ طور پر چلتا ہے۔ ٹاسکس انتظار کے دوران دوسرے کوڈ کو بلاک نہیں کرتے۔ اسے non-blocking کہا جاتا ہے۔ ٹاسک بیک گراؤنڈ میں شروع ہوتا ہے اور مکمل ہونے پر آپ کو مطلع کرتا ہے۔
- Execution: ٹاسکس آزادانہ طور پر چلتے ہیں۔
- Blocking: نہیں۔
- Complexity: زیادہ۔
- Best for: API calls، timers، اور فائل آپریشنز کے لیے۔
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: ایک کے بعد ایک۔ ایگزیکیوشن کو بلاک کرتا ہے۔
- 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