JavaScript செயல்பாடுகள், திரெட்கள் மற்றும் அசிங்க்ரோனஸ் இயக்கம்
JavaScript எவ்வாறு பின்னணியில் செயல்படுகிறது என்பதை நீங்கள் புரிந்து கொள்ள வேண்டும்.
செயல்பாடுகள், செயல்முறைகள் (processes), திரெட்கள் (threads) மற்றும் இயக்க முறைகள் பற்றிய விளக்கம் இதோ.
JavaScript செயல்பாடுகளின் வகைகள்
- Named Function: ஒரு குறிப்பிட்ட பெயரைப் பயன்படுத்துகிறது. இது பிழைத்திருத்தத்தை (debugging) எளிதாக்குகிறது.
- Anonymous Function: இதற்குப் பெயர் இல்லை. இவற்றை நீங்கள் பெரும்பாலும் callbacks-களாகப் பயன்படுத்துவீர்கள்.
- Function Expression: ஒரு செயல்பாட்டை ஒரு மாறிக்கு (variable) நீங்கள் ஒதுக்குகிறீர்கள்.
- Arrow Function: => குறியீட்டைப் பயன்படுத்தும் ஒரு சுருக்கமான முறை.
- IIFE: இது ஒரு Immediately Invoked Function Expression ஆகும். நீங்கள் வரையறுத்த உடனே இது இயங்கும்.
Process vs. Thread
ஒரு Process என்பது உங்கள் கணினியில் இயங்கும் ஒரு நிரல் (program) ஆகும்.
- ஒவ்வொரு process-க்கும் அதன் சொந்த நினைவகம் (memory) உண்டு.
- ஒரு process செயலிழந்தால் (crash), மற்றவை தொடர்ந்து இயங்கும்.
- உதாரணம்: Chrome மற்றும் Spotify ஆகியவை தனித்தனி processes ஆகும்.
ஒரு Thread என்பது ஒரு process-க்குள் இருக்கும் ஒரு சிறிய அலகு ஆகும்.
- Threads ஒரே நினைவகத்தைப் பகிர்ந்து கொள்கின்றன.
- இவை ஒரே நேரத்தில் பல வேலைகளைச் செய்ய ஒரு நிரலை அனுமதிக்கின்றன.
- உதாரணம்: Chrome-க்குள், ஒரு thread பக்கத்தை (page) காண்பிக்கிறது (renders), அதே நேரத்தில் மற்றொரு thread உங்கள் மவுஸ் கிளிக்ஸ்களைக் கையாள்கிறது.
Synchronous vs. Asynchronous
JavaScript என்பது single-threaded ஆகும். இது call stack-ஐப் பயன்படுத்தி ஒரு நேரத்தில் ஒரு வேலையை மட்டுமே கையாள்கிறது.
Synchronous இயக்கம்:
- வேலைகள் ஒன்றன்பின் ஒன்றாக இயங்கும்.
- ஒவ்வொரு வேலையும் முந்தைய வேலை முடியும் வரை காத்திருக்கும்.
- மெதுவான வேலைகள் உங்கள் குறியீடு (code) இயங்குவதைத் தடுக்கும் (block).
Asynchronous இயக்கம்:
- வேலைகள் பின்னணியில் (background) இயங்கும்.
- ஒரு வேலை முடியும் வரை காத்திருக்கும்போது குறியீடு நின்றுவிடாது.
- இது Web APIs, Callback Queue மற்றும் Event Loop ஆகியவற்றைப் பயன்படுத்துகிறது.
Asynchronous எவ்வாறு செயல்படுகிறது:
- JavaScript ஒரு வேலையை (timer போன்றது) Web API-க்கு அனுப்புகிறது.
- முக்கிய குறியீடு தொடர்ந்து இயங்கிக்கொண்டே இருக்கும்.
- வேலை முடிந்ததும், அது Callback Queue-க்குச் செல்லும்.
- Call Stack காலியாக இருக்கும்போது, Event Loop அதை Call Stack-க்கு மாற்றுகிறது.
இது உங்கள் இணைய செயலிகளை (web apps) வேகமாகவும், துரிதமாகவும் (responsive) வைத்திருக்க உதவுகிறது.