JavaScript Synchronous மற்றும் Asynchronous
JavaScript ஒரு ஒற்றை த்ரெட்டில் (single thread) இயங்குகிறது. அதாவது, இது ஒரு நேரத்தில் ஒரு வேலையை மட்டுமே செய்கிறது. திறமையான குறியீட்டை (code) எழுத, அது பணிகளைக் எவ்வாறு கையாள்கிறது என்பதை நீங்கள் புரிந்து கொள்ள வேண்டும்.
Synchronous JavaScript
Synchronous குறியீடு வரி வரியாக இயங்குகிறது. ஒவ்வொரு பணியும் முந்தைய பணி முடிவடைவதற்காகக் காத்திருக்கும். இது 'blocking' என்று அழைக்கப்படுகிறது. ஒரு பணி அதிக நேரம் எடுத்தால், முழு நிரலும் (program) நின்றுவிடும்.
- இயக்கம்: நிலையான வரிசை.
- Blocking: ஆம்.
- சிக்கல்தன்மை: எளிமையானது.
- சிறந்தது: எளிமையான, வரிசைமுறைப் பணிகளுக்கு.
Asynchronous JavaScript
Asynchronous குறியீடு சுதந்திரமாக இயங்குகிறது. பணிகள் காத்திருக்கும் போது மற்ற குறியீடுகளைத் தடுக்காது. இது 'non-blocking' என்று அழைக்கப்படுகிறது. பணி பின்னணியில் (background) தொடங்கி, அது முடிந்ததும் உங்களுக்குத் தெரிவிக்கும்.
- இயக்கம்: பணிகள் சுதந்திரமாக இயங்கும்.
- Blocking: இல்லை.
- சிக்கல்தன்மை: அதிகம்.
- சிறந்தது: API அழைப்புகள், டைமர்கள் மற்றும் கோப்பு செயல்பாடுகள்.
Asynchronous பணிகளைக் கையாள மூன்று வழிகள்:
- Callbacks: ஒரு பணி முடிந்த பிறகு இயங்கும் ஒரு function.
- Promises: ஒரு செயல்பாட்டின் நிறைவு அல்லது தோல்வியைக் குறிக்கும் ஒரு object.
- Async/Await: மிகவும் சுத்தமான முறை. இது த்ரெட்டைத் தடுக்காமல், asynchronous குறியீட்டை synchronous குறியீடு போலக் காட்டும்.
பொதுவான asynchronous செயல்பாடுகள்:
- Timers:
setTimeout() - API calls:
fetch() - File reading:
readFile() - User events:
addEventListener()
Event Loop தான் இதைச் சாத்தியமாக்குகிறது. இது ஒரே நேரத்தில் பல பணிகளை நிர்வகிக்க Call Stack, Web APIs மற்றும் Callback Queue ஆகியவற்றைப் பயன்படுத்துகிறது.
சுருக்கம்:
- Synchronous: ஒன்றன்பின் ஒன்றாக. இயக்கத்தைத் தடுக்கும்.
- Asynchronous: சுதந்திரமான பணிகள். தடுக்காது.
- JavaScript இயல்புநிலை: 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
முழு பதிவு: https://dev.to/raja_b_0c9d242e2c26cf063b/javascript-synchronous-and-asynchronous-2a69