தொகுதி பாடங்கள் (1/4)
வாக்குறுதிகள்: அவை என்ன
வாக்குறுதி என்பது எதிர்காலத்தில் முடிவடையும் செயல்பாட்டின் முடிவைக் குறிக்கும் மதிப்பு. இது மூன்று மாநிலங்களில் ஒன்றில் இருக்கலாம்:
- நிலுவையில் உள்ளது — செயல்பாடு இன்னும் நடந்து கொண்டிருக்கிறது
- நிறைவேற்றப்பட்டது — இது வெற்றிகரமாக முடிந்தது, ஒரு மதிப்பு உள்ளது
- ** நிராகரிக்கப்பட்டது** - அது தோல்வியடைந்தது, பிழை உள்ளது
நிலுவையில் உள்ள நிலையை விட்டு வெளியேறியவுடன், அது என்றென்றும் "குடியேறியது".
தீர்க்கப்பட்ட வாக்குறுதியை உருவாக்குதல்
மிகவும் பொதுவான இரண்டு வழிகள் — நீங்கள் கன்ஸ்ட்ரக்டருடன் "கையால்" ஒரு வாக்குறுதியை உருவாக்க மாட்டீர்கள்:
const p1 = Promise.resolve(42);
const p2 = Promise.reject(new Error('oops'));முடிவைப் படிக்கிறது: .then / .catch
Promise.resolve(10).then((v) => {
console.log(v); // 10
});
Promise.reject(new Error('no')).catch((e) => {
console.log(e.message); // 'no'
});.then ஆனது தீர்க்கப்பட்ட மதிப்பு என்ற செயல்பாட்டைப் பெறுகிறது.
.catch நிராகரிக்கப்பட்டால் பிழையுடன் அழைக்கப்படும் செயல்பாட்டைப் பெறுகிறது.
சங்கிலியிடுதல்
ஒவ்வொரு .then திரும்பவும் ஒரு வாக்குறுதியை அளிக்கிறது: அவற்றை மாற்றுவதற்கு நீங்கள் அவர்களை சங்கிலியால் இணைக்கலாம்
படிப்படியாக மதிப்பு.
Promise.resolve(5)
.then((n) => n * 2)
.then((n) => n + 1)
.then((n) => console.log(n)); // 11.then எறிந்தால் (அல்லது தோல்வியுற்ற வாக்குறுதியை அளித்தால்), செயல்படுத்துதல்
முதல் அடுத்த .catchக்கு தாவுகிறது.
கன்ஸ்ட்ரக்டர் (அரிதாக)
const p = new Promise((resolve, reject) => {
if (Math.random() > 0.5) resolve('ok');
else reject(new Error('no'));
});கால்பேக்குகளைப் பயன்படுத்தும் (எ.கா. பழைய DOM APIகள் அல்லது setTimeout) ஏதாவது "வாக்குறுதி" செய்ய வேண்டியிருக்கும் போது மட்டுமே அதைப் பயன்படுத்துவீர்கள்.
முயற்சி செய்து பாருங்கள்
`promisedVersion(n)` என்பதை வரையறுக்கவும், ஒரு எண்ணைக் கொடுத்தால், n இன் இரட்டிப்பாக தீர்க்கப்பட்ட வாக்குறுதியை வழங்கும்.
குறிப்பைக் காட்டு
திரும்ப Promise.resolve(n * 2)
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்
மதிப்பாய்வு பயிற்சி
ஒரு எண்ணின் உறுதிமொழியைப் பெற்று, எண்ணின் உறுதிமொழியை வழங்கும் `incrementThree(p)` ஐ வரையறுக்கவும்.
குறிப்பைக் காட்டு
p.then((n) => n + 3)
3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்