ஜாவாஸ்கிரிப்ட் குறியீட்டை எவ்வாறு செயல்படுத்துகிறது என்பதைப் புரிந்துகொள்வது: ஒத்திசைவான மற்றும் ஒத்திசைவற்ற வடிவங்கள்
ஜாவாஸ்கிரிப்ட் என்பது ஒரு ஒற்றை-திரிக்கப்பட்ட மொழி, அதாவது இது ஒரு நேரத்தில் ஒரு வரி குறியீட்டை இயக்குகிறது. இது ஒத்திசைவான மற்றும் ஒத்திசைவற்ற பணிகளை எவ்வாறு கையாள்கிறது என்பதைப் புரிந்துகொள்வது டெவலப்பர்களுக்கு முக்கியமானது. பெரும்பாலும், இந்த தலைப்பைப் பற்றிய கேள்விகள் தொழில்நுட்ப நேர்காணல்களில் தோன்றும், இந்த கருத்துகளை முழுமையாக புரிந்துகொள்வது முக்கியம்.
போன்ற செயல்பாடுகளை டெவலப்பர்கள் பயன்படுத்தும் போது நேரம் முடிந்தது அல்லது வாக்குறுதி அளிக்கிறார், மரணதண்டனை ஓட்டம் முதலில் சற்று எதிர்பாராததாகத் தோன்றலாம். இருப்பினும், ஒரு தெளிவான கட்டமைப்பைப் பின்பற்றுவதன் மூலம், உங்கள் குறியீட்டின் வெவ்வேறு பகுதிகள் செயல்படும் சரியான வரிசையை நீங்கள் தீர்மானிக்கலாம். கையாளும் போது இது மிகவும் முக்கியமானது திரும்ப அழைக்கிறது மற்றும் நிகழ்வு வரிசைகள்.
இந்த எடுத்துக்காட்டில், ஜாவாஸ்கிரிப்ட் எவ்வாறு ஒத்திசைவான பணிகளைக் கையாளுகிறது என்பதை நாங்கள் உடைப்போம் console.log மற்றும் ஒத்திசைவற்ற செயல்பாடுகள் போன்றவை நேரம் முடிந்தது மற்றும் வாக்குறுதி அளிக்கிறார். இந்த விளக்கத்தின் முடிவில், ஜாவாஸ்கிரிப்ட்டின் நிகழ்வு லூப் எவ்வாறு பணிகளுக்கு முன்னுரிமை அளிக்கிறது மற்றும் செயலாக்குகிறது என்பதை நீங்கள் தெளிவாகப் புரிந்துகொள்வீர்கள்.
நேர்காணல் கேள்விகளைக் கையாளும் போது அல்லது ஒத்திசைவற்ற குறியீட்டைப் பிழைத்திருத்தம் செய்யும் போது பயனுள்ள திறமையான ஜாவாஸ்கிரிப்டில் செயல்படுத்தும் வரிசையைத் தீர்மானிக்க உதவும் வகையில் இந்தக் கட்டுரை வடிவமைக்கப்பட்டுள்ளது. கருத்துக்களை தெளிவாக நிரூபிக்க ஒரு நடைமுறை உதாரணத்திற்கு டைவ் செய்யலாம்.
கட்டளை | பயன்பாட்டின் உதாரணம் |
---|---|
setTimeout() | இந்தச் செயல்பாடு ஒரு குறிப்பிட்ட தாமதத்திற்குப் பிறகு குறியீடு செயல்படுத்தலைத் திட்டமிடுகிறது. செயல்களை தாமதப்படுத்துதல் அல்லது நிகழ்வு வளையத்திற்கு செயல்பாடுகளை ஒத்திவைத்தல் போன்ற ஒத்திசைவற்ற பணிகளை உருவகப்படுத்த இது பயன்படுகிறது. எடுத்துக்காட்டில், "B" மற்றும் "E" ஐ பதிவு செய்வதை தாமதப்படுத்த இது பயன்படுத்தப்படுகிறது. |
Promise.resolve() | உடனடியாக தீர்க்கப்படும் வாக்குறுதியை உருவாக்குகிறது. நீங்கள் ஒத்திசைவற்ற குறியீட்டை இயக்க வேண்டியிருக்கும் போது இது பயனுள்ளதாக இருக்கும், ஆனால் வெளிப்புற நிலைக்காக காத்திருக்க வேண்டிய அவசியமில்லை. எடுத்துக்காட்டில், இது "B" க்குப் பிறகு ஒத்திசைவற்ற முறையில் "D" ஐப் பதிவு செய்யப் பயன்படுகிறது. |
then() | இந்த முறையானது வாக்குறுதிக்கு திரும்ப அழைப்பை இணைக்கிறது, அது வாக்குறுதி தீர்க்கப்படும்போது செயல்படுத்தப்படும். ஒத்திசைவற்ற பணி முடிந்ததும் குறிப்பிட்ட குறியீடு இயங்கும் என்பதை இது உறுதி செய்கிறது. இங்கே, தீர்க்கப்பட்ட வாக்குறுதிக்குப் பிறகு "D" உள்நுழைந்திருப்பதை இது உறுதி செய்கிறது. |
Event Loop | நிகழ்வு வளையம் என்பது ஜாவாஸ்கிரிப்டில் ஒத்திசைவற்ற பணிகளின் செயல்பாட்டைக் கையாளும் ஒரு பொறிமுறையாகும். நேரடியாக கட்டளையாக இல்லாவிட்டாலும், அதன் செயல்பாட்டைப் புரிந்துகொள்வது குறியீட்டில் உள்ள செயல்பாடுகளின் வரிசையை விளக்குவதற்கு முக்கியமானது. தற்போதைய ஸ்டேக் அழிக்கப்பட்ட பிறகு, திரும்ப திரும்ப வரிசையிலிருந்து பணிகளைச் செயல்படுத்துகிறது. |
Microtask Queue | தீர்க்கப்பட்ட வாக்குறுதிகள் போன்ற பணிகளுக்கான முன்னுரிமை வரிசை இது. நிகழ்வு லூப்பின் பணி வரிசையில் (செட் டைம்அவுட் கால்பேக்குகள் போன்றவை) மைக்ரோ டாஸ்க்குகள் (தீர்க்கப்பட்ட வாக்குறுதிகள் போன்றவை) பணிகளுக்கு முன் செயல்படுத்தப்படும். இதனாலேயே "ஈ"க்கு முன் "டி" பதிவு செய்கிறது. |
Console.log() | பிழைத்திருத்த நோக்கங்களுக்காக கன்சோலில் செய்திகளை அச்சிடப் பயன்படுகிறது. இந்த சூழலில், ஒத்திசைவான மற்றும் ஒத்திசைவற்ற குறியீடு செயல்படும் வரிசையைக் கண்காணிப்பதற்கு இது உதவியாக இருக்கும். |
Callback Queue | செட் டைம்அவுட்டுக்கு அனுப்பப்பட்ட செயல்பாடுகள் போன்ற தற்போதைய குறியீடு செயல்படுத்தல் முடிந்ததும் செயல்படுத்தத் தயாராக இருக்கும் பணிகளை கால்பேக் வரிசை சேமிக்கிறது. நிகழ்வு வளையமானது இந்தப் பணிகளை அழைப்பு அடுக்கிற்கு நகர்த்துகிறது. |
Zero Delay | ஒரு setTimeout() தாமதம் 0 என அமைக்கப்பட்டால், அனைத்து ஒத்திசைவு பணிகள் மற்றும் மைக்ரோ டாஸ்க்குகள் முடிந்த பிறகு மீண்டும் அழைப்பு செயல்படுத்தப்படும். எடுத்துக்காட்டில், "E" உடன் திரும்ப அழைப்பது அதன் தாமதம் 0 ஆக இருந்தாலும் "D" க்குப் பிறகு இயங்கும். |
Asynchronous Execution | இது ஒரு நிரலாக்க முன்னுதாரணமாகும், இதில் சில செயல்பாடுகள் பிரதான குறியீடு ஓட்டத்திலிருந்து தனித்தனியாக இயங்கும், ஜாவாஸ்கிரிப்ட் நெட்வொர்க் கோரிக்கைகள் அல்லது டைமர்கள் போன்ற பணிகளை பிரதான தொடரிழையைத் தடுக்காமல் கையாள அனுமதிக்கிறது. |
ஜாவாஸ்கிரிப்ட் எக்ஸிகியூஷன் ஃப்ளோவை ஆராய்கிறது: ஒத்திசைவு மற்றும் ஒத்திசைவற்ற குறியீடு
ஜாவாஸ்கிரிப்டில், ஒத்திசைவான மற்றும் ஒத்திசைவற்ற குறியீட்டின் செயல்பாட்டின் வரிசையைப் புரிந்துகொள்வது அவசியம், குறிப்பாக கையாளும் போது நேரம் முடிந்தது மற்றும் வாக்குறுதி அளிக்கிறார். நிகழ்வு வளையமானது எவ்வாறு ஒத்திசைவான பணிகளை முதலில் செயலாக்குகிறது மற்றும் பின்னர் வரிசைப்படுத்தப்பட்ட ஒத்திசைவற்ற பணிகளை எவ்வாறு கையாள்கிறது என்பதை புரிந்து கொள்ள வேண்டிய முக்கிய கருத்து. வழங்கப்பட்ட உதாரணக் குறியீட்டில், முதல் இரண்டு பதிவுகள் ("A" மற்றும் "F") ஒத்திசைவானவை, அதாவது அவை குறியீட்டில் தோன்றும் சரியான வரிசையில் செயல்படுத்தப்படும். அவை செயல்படுத்தப்படும் தருணத்தில், ஸ்கிரிப்ட் உடனடியாக செட் டைம்அவுட் போன்ற ஒத்திசைவற்ற பணிகளை பின்னர் செயலாக்கத்திற்கு திட்டமிடுகிறது.
செட் டைம்அவுட் செயல்பாடு செயல்பாடுகளை ஒத்திவைப்பதற்கான ஒரு பொதுவான வழியாகும், இது செயல்படுத்தும் ஓட்டத்தில் தாமத உணர்வை உருவாக்குகிறது. இந்த வழக்கில், இருவரும் நேரம் முடிந்தது செயல்பாடுகள் கன்சோல் பதிவுகள் "B" மற்றும் "E" ஐ நிகழ்வு வரிசையில் சேர்க்க பயன்படுகிறது. "E" ஆனது 0 மில்லி விநாடிகள் தாமதத்தைக் கொண்டிருந்தாலும், தற்போதைய ஒத்திசைவான செயல்பாடுகள் மற்றும் மைக்ரோ டாஸ்க்குகள் முடிந்த பிறகும் அது வரிசையாக இருக்கும் என்பதைக் கவனத்தில் கொள்ள வேண்டும். இந்த நுட்பமான வேறுபாட்டைப் புரிந்துகொள்வது மிகவும் சிக்கலான ஜாவாஸ்கிரிப்ட் பணிகளுக்கான செயலாக்க வரிசையை தீர்மானிப்பதில் முக்கியமானது.
முதல் உள்ளே நேரம் முடிந்தது கால்பேக், "B" பதிவு முதலில் அச்சிடப்படுகிறது, ஏனெனில் இது இன்னும் ஒத்திசைவான பணி வரிசையில் ஒரு பகுதியாக உள்ளது, இது முன்னுரிமை பெறுகிறது. பின்னர், அந்த அழைப்பிற்குள், ஒரு தீர்க்கமான வாக்குறுதி உருவாக்கப்பட்டது வாக்குறுதி.தீர்வு. இது ஒரு மைக்ரோடாஸ்க்கைத் தூண்டுகிறது, இது "D" பதிவு "B" க்குப் பிறகு நிகழ்வதை உறுதிசெய்கிறது, ஆனால் முக்கிய நிகழ்வு வரிசையில் மற்ற பணிகளுக்கு முன். மைக்ரோடாஸ்க் வரிசையில் வைக்கப்படும் ப்ராமிஸின் இந்த நடத்தை, "E" இன் இரண்டாவது செட் டைம்அவுட் கால்பேக் பதிவுகளுக்கு முன் "D" உள்நுழைய அனுமதிக்கிறது. எனவே, மைக்ரோ டாஸ்க்குகள் நிலையான ஒத்திசைவற்ற பணிகளுக்கு முன்னுரிமை அளிக்கின்றன.
இறுதி செயலாக்க வரிசையைச் சுருக்கமாகக் கூற: "A" மற்றும் "F" ஆகியவை ஒத்திசைவாக உள்நுழைந்தன, அதைத் தொடர்ந்து "B", இது முதல் setTimeout ஆல் வரிசைப்படுத்தப்படுகிறது. தீர்க்கப்பட்ட வாக்குறுதியானது "D" ஐ மைக்ரோடாஸ்க்காக உள்நுழையச் செய்கிறது. இறுதியாக, "E" கடைசியாக பதிவு செய்யப்பட்டது, ஏனெனில் அது இரண்டாவது பகுதியாகும் நேரம் முடிந்தது திரும்ப அழைக்க. நேர்காணல் கேள்விகளுக்கு பதிலளிக்கும் போது அல்லது நிஜ வாழ்க்கை திட்டங்களில் ஒத்திசைவற்ற குறியீட்டை பிழைத்திருத்தம் செய்யும் போது, ஒத்திசைவான பணிகள், நிகழ்வு வளையம் மற்றும் மைக்ரோ டாஸ்க்குகளை இணைக்கும் ஜாவாஸ்கிரிப்ட்டின் செயலாக்க ஓட்டம் பற்றிய இந்த புரிதல் விலைமதிப்பற்றது.
வெவ்வேறு சூழ்நிலைகளில் ஜாவாஸ்கிரிப்ட்டின் ஒத்திசைவான மற்றும் ஒத்திசைவற்ற செயலாக்கத்தைப் புரிந்துகொள்வது
இந்த ஸ்கிரிப்ட் ஒத்திசைவான மற்றும் ஒத்திசைவற்ற செயல்பாடுகளின் கலவையைப் பயன்படுத்தி ஜாவாஸ்கிரிப்ட்டின் நிகழ்வு லூப் பொறிமுறையை நிரூபிக்கிறது.
console.log("A");
setTimeout(() => {
console.log("B");
Promise.resolve("C").then(() => console.log("D"));
}, 1000);
setTimeout(() => console.log("E"), 0);
console.log("F");
ஜாவாஸ்கிரிப்ட் செயலாக்கத்தை பகுப்பாய்வு செய்தல்: நிகழ்வு சுழற்சியில் ஒரு கவனம்
இந்த உதாரணம் முந்தையதை உருவாக்குகிறது, வெவ்வேறு நேர சூழ்நிலைகளில் வரிசைப்படுத்தப்பட்ட பணிகளை நிகழ்வு வளையம் எவ்வாறு செயலாக்குகிறது என்பதைக் காட்டுகிறது.
console.log("Start");
setTimeout(() => {
console.log("Middle");
}, 500);
Promise.resolve().then(() => {
console.log("Promise 1");
});
console.log("End");
ஜாவாஸ்கிரிப்ட்டின் நிகழ்வு லூப் மற்றும் டாஸ்க் முன்னுரிமையில் ஆழமாக மூழ்கவும்
ஜாவாஸ்கிரிப்ட்டின் ஒத்திசைவற்ற நடத்தையின் முக்கிய அம்சம் நிகழ்வு வளையம், இது கால்பேக்குகள், வாக்குறுதிகள் மற்றும் பிற ஒத்திசைவற்ற குறியீட்டை செயல்படுத்துவதற்கு பொறுப்பாகும். அழைப்பு ஸ்டேக் காலியாக உள்ளதா என்பதை இந்த நிகழ்வு லூப் தொடர்ந்து சரிபார்க்கிறது, அது இருந்தால், அது கால்பேக் வரிசை மற்றும் மைக்ரோடாஸ்க் வரிசையில் இருந்து பணிகளைச் செயல்படுத்துகிறது. இந்த வரிசைகளுக்குள் பணிகள் எவ்வாறு முன்னுரிமை அளிக்கப்படுகின்றன என்பதைப் புரிந்துகொள்வது, குறியீடானது எதிர்பார்த்தபடி செயல்படுவதை உறுதிசெய்வதற்கு முக்கியமானது, குறிப்பாக கையாளும் போது நேரம் முடிந்தது மற்றும் ஒரே நேரத்தில் வாக்குறுதிகள்.
கால்பேக் வரிசையை விட மைக்ரோடாஸ்க் வரிசை முன்னுரிமை பெறுகிறது. போன்ற பணிகள் உறுதிமொழி தீர்மானங்கள் மைக்ரோடாஸ்க் வரிசையில் வைக்கப்படுகின்றன, அதாவது, செட் டைம்அவுட்டில் பூஜ்ஜிய தாமதம் இருந்தாலும், அழைப்பு வரிசையில் இருந்து ஏதேனும் தாமதமான பணிகளுக்கு முன் அவை செயல்படுத்தப்படும். அதனால்தான் குறியீடு எடுத்துக்காட்டில், வாக்குறுதியிலிருந்து "D" பதிவு இரண்டாவது செட் டைம்அவுட்டில் இருந்து "E" பதிவுக்கு முன் செயல்படுத்தப்படுகிறது. எதிர்பாராத நடத்தையைத் தவிர்ப்பதற்கு ஒத்திசைவற்ற செயல்பாடுகளைக் கலக்கும் குறியீட்டை எழுதும் போது டெவலப்பர்கள் இதைப் புரிந்துகொள்வது இன்றியமையாதது.
நிஜ-உலகப் பயன்பாடுகளில், API அழைப்புகள் அல்லது டைமர்கள் போன்ற ஒத்திசைவற்ற செயல்பாடுகள் ஒத்திசைவான குறியீட்டுடன் அடிக்கடி தொடர்பு கொள்கின்றன. ஈவென்ட் லூப், கால்பேக் வரிசை மற்றும் மைக்ரோடாஸ்க் வரிசை எவ்வாறு செயல்படுகிறது என்பதை அறிந்துகொள்வதன் மூலம், டெவலப்பர்கள் தங்கள் குறியீட்டின் முடிவை சிறப்பாகக் கணிக்க முடியும். செயல்திறனை மேம்படுத்தும் போது அல்லது சிக்கலான ஸ்கிரிப்ட்களை பிழைத்திருத்தம் செய்யும் போது இது மிகவும் முக்கியமானது ஒத்திசைவற்ற செயல்பாடுகள் மற்றும் ஒத்திசைவான குறியீடு அடிக்கடி தொடர்பு கொள்கிறது.
ஜாவாஸ்கிரிப்ட் எக்ஸிகியூஷன் ஆர்டரில் அடிக்கடி கேட்கப்படும் கேள்விகள்
- ஜாவாஸ்கிரிப்டில் நிகழ்வு லூப் என்றால் என்ன?
- நிகழ்வு லூப் என்பது ஜாவாஸ்கிரிப்ட் மூலம் தூண்டப்பட்ட ஒத்திசைவற்ற செயல்பாடுகளை நிர்வகிக்கவும் முன்னுரிமை அளிக்கவும் பயன்படுத்தும் பொறிமுறையாகும். setTimeout அல்லது Promises.
- எப்படி செய்கிறது setTimeout வேலை?
- setTimeout ஒரு குறிப்பிட்ட காலதாமதத்திற்குப் பிறகு மீண்டும் ஒரு அழைப்பைச் செயல்படுத்த திட்டமிடுகிறது, ஆனால் அது திரும்ப அழைப்பின் வரிசையில் வைக்கப்பட்டு, அனைத்து ஒத்திசைவான குறியீடு மற்றும் மைக்ரோ டாஸ்க்குகளும் செயலாக்கப்பட்ட பின்னரே செயல்படுத்தப்படும்.
- ஏன் ஒரு Promise ஒரு முன் தீர்க்க setTimeout 0 தாமதத்துடன்?
- மைக்ரோடாஸ்க் வரிசையில் வாக்குறுதிகள் வைக்கப்படுகின்றன, இது திரும்ப திரும்ப வரிசையை விட அதிக முன்னுரிமையைக் கொண்டுள்ளது. setTimeout அழைப்புகள் வைக்கப்படுகின்றன.
- கால்பேக் வரிசைக்கும் மைக்ரோ டாஸ்க் வரிசைக்கும் என்ன வித்தியாசம்?
- திரும்ப திரும்ப வரிசை பயன்படுத்தப்படுகிறது setTimeout மற்றும் பிற ஒத்திசைவற்ற செயல்பாடுகள், மைக்ரோடாஸ்க் வரிசை போன்ற பணிகளைக் கையாளும் போது Promise திரும்ப அழைப்பதற்கு முன் தீர்மானங்கள் மற்றும் செயலாக்கங்கள்.
- எதற்காக மரணதண்டனை வரிசை console.log வழங்கப்பட்ட எடுத்துக்காட்டில் உள்ள அறிக்கைகள்?
- நிகழ்வு லூப் மூலம் ஒத்திசைவான மற்றும் ஒத்திசைவற்ற பணிகள் கையாளப்படும் விதத்தின் காரணமாக "A", "F", "B", "D", "E" வரிசை.
ஜாவாஸ்கிரிப்ட்டின் எக்ஸிகியூஷன் மாடலை மூடுகிறது
ஜாவாஸ்கிரிப்ட்டின் நிகழ்வு வளையத்தைப் புரிந்துகொள்வது எப்படி என்பதை மாஸ்டரிங் செய்வதற்கு மிகவும் முக்கியமானது ஒத்திசைவற்ற போன்ற செயல்பாடுகள் நேரம் முடிந்தது மற்றும் வாக்குறுதி அளிக்கிறார் நிறைவேற்றப்படுகின்றன. டெவலப்பர்கள் தங்கள் குறியீடு எதிர்பார்த்தபடி செயல்படுவதை உறுதிசெய்யவும், பல பணிகளைக் கையாளும் போது பொதுவான ஆபத்துக்களைத் தவிர்க்கவும் இது உதவுகிறது.
இந்த எடுத்துக்காட்டில், "A", "F", "B", "D" மற்றும் "E" ஆகியவற்றின் இறுதி செயலாக்க வரிசையானது, setTimeout இலிருந்து அழைப்புகளை விட மைக்ரோடாஸ்க்குகள் (வாக்குறுதிகள்) எவ்வாறு முன்னுரிமை பெறுகின்றன என்பதை விளக்குகிறது. நேர்காணல் கேள்விகள் மற்றும் நிஜ வாழ்க்கை குறியீட்டு சவால்களுக்கு இந்த அறிவு விலைமதிப்பற்றது.
ஜாவாஸ்கிரிப்ட் எக்ஸிகியூஷன் ஆர்டருக்கான குறிப்புகள் மற்றும் ஆதாரங்கள்
- ஜாவாஸ்கிரிப்டில் நிகழ்வு லூப் மற்றும் பணி முன்னுரிமைக் கருத்துகளை விரிவாகக் காட்டுகிறது. MDN Web Docs - Event Loop
- நடத்தை பற்றி விவாதிக்கிறது வாக்குறுதி அளிக்கிறார் மற்றும் நேரம் முடிந்தது ஒத்திசைவற்ற ஜாவாஸ்கிரிப்ட் குறியீடு செயல்படுத்தலில். ஜாவாஸ்கிரிப்ட் தகவல் - மைக்ரோடாஸ்க் வரிசை
- ஜாவாஸ்கிரிப்ட் எடுத்துக்காட்டுகளைப் பயன்படுத்தி ஒத்திசைவான மற்றும் ஒத்திசைவற்ற பணிகளுக்கான செயல்பாட்டின் வரிசையை விளக்குகிறது. freeCodeCamp - ஜாவாஸ்கிரிப்ட் வாக்குறுதிகளைப் புரிந்துகொள்வது