𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗦𝘆𝗻𝗰𝗵𝗿𝗼𝗻𝗼𝘂𝘀 𝗮𝗻𝗱 𝗔𝘀𝘆𝗻𝗰𝗵𝗿𝗼𝗻𝗼𝘂𝘀
JavaScript ఒకే థ్రెడ్పై (single thread) నడుస్తుంది. అంటే ఇది ఒక సమయంలో ఒక పనిని మాత్రమే చేస్తుంది. సమర్థవంతమైన కోడ్ను వ్రాయడానికి ఇది పనులను ఎలా నిర్వహిస్తుందో మీరు అర్థం చేసుకోవాలి.
Synchronous JavaScript
Synchronous కోడ్ లైన్ బై లైన్ (line by line) నడుస్తుంది. ప్రతి పని ముగిసే వరకు తదుపరి పని వేచి ఉంటుంది. దీనిని 'blocking' అని పిలుస్తారు. ఒక పని పూర్తి కావడానికి ఎక్కువ సమయం తీసుకుంటే, మొత్తం ప్రోగ్రామ్ ఆగిపోతుంది.
- Execution: నిర్ణీత క్రమం (Fixed sequence).
- Blocking: అవును.
- Complexity: సులభం.
- Best for: సాధారణ, వరుస పనుల కోసం.
Asynchronous JavaScript
Asynchronous కోడ్ స్వతంత్రంగా నడుస్తుంది. పనులు వేచి ఉన్నప్పుడు అవి ఇతర కోడ్ను ఆపవు (block చేయవు). దీనిని '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