முக்கிய உள்ளடக்கத்திற்குச் செல்லவும்
தொகுதி 7 · பாடம் 1 இன் 4பாடத்திட்டத்தில் 25/32~12 min
தொகுதி பாடங்கள் (1/4)

வாக்குறுதிகள்: அவை என்ன

வாக்குறுதி என்பது எதிர்காலத்தில் முடிவடையும் செயல்பாட்டின் முடிவைக் குறிக்கும் மதிப்பு. இது மூன்று மாநிலங்களில் ஒன்றில் இருக்கலாம்:

  • நிலுவையில் உள்ளது — செயல்பாடு இன்னும் நடந்து கொண்டிருக்கிறது
  • நிறைவேற்றப்பட்டது — இது வெற்றிகரமாக முடிந்தது, ஒரு மதிப்பு உள்ளது
  • ** நிராகரிக்கப்பட்டது** - அது தோல்வியடைந்தது, பிழை உள்ளது

நிலுவையில் உள்ள நிலையை விட்டு வெளியேறியவுடன், அது என்றென்றும் "குடியேறியது".

தீர்க்கப்பட்ட வாக்குறுதியை உருவாக்குதல்

மிகவும் பொதுவான இரண்டு வழிகள் — நீங்கள் கன்ஸ்ட்ரக்டருடன் "கையால்" ஒரு வாக்குறுதியை உருவாக்க மாட்டீர்கள்:

JS
const p1 = Promise.resolve(42);
const p2 = Promise.reject(new Error('oops'));

முடிவைப் படிக்கிறது: .then / .catch

JS
Promise.resolve(10).then((v) => {
  console.log(v); // 10
});

Promise.reject(new Error('no')).catch((e) => {
  console.log(e.message); // 'no'
});

.then ஆனது தீர்க்கப்பட்ட மதிப்பு என்ற செயல்பாட்டைப் பெறுகிறது. .catch நிராகரிக்கப்பட்டால் பிழையுடன் அழைக்கப்படும் செயல்பாட்டைப் பெறுகிறது.

சங்கிலியிடுதல்

ஒவ்வொரு .then திரும்பவும் ஒரு வாக்குறுதியை அளிக்கிறது: அவற்றை மாற்றுவதற்கு நீங்கள் அவர்களை சங்கிலியால் இணைக்கலாம் படிப்படியாக மதிப்பு.

JS
Promise.resolve(5)
  .then((n) => n * 2)
  .then((n) => n + 1)
  .then((n) => console.log(n)); // 11

.then எறிந்தால் (அல்லது தோல்வியுற்ற வாக்குறுதியை அளித்தால்), செயல்படுத்துதல் முதல் அடுத்த .catchக்கு தாவுகிறது.

கன்ஸ்ட்ரக்டர் (அரிதாக)

JS
const p = new Promise((resolve, reject) => {
  if (Math.random() > 0.5) resolve('ok');
  else reject(new Error('no'));
});

கால்பேக்குகளைப் பயன்படுத்தும் (எ.கா. பழைய DOM APIகள் அல்லது setTimeout) ஏதாவது "வாக்குறுதி" செய்ய வேண்டியிருக்கும் போது மட்டுமே அதைப் பயன்படுத்துவீர்கள்.

முயற்சி செய்து பாருங்கள்

உடற்பயிற்சி#js.m7.l1.e1
முயற்சிகள்: 0ஏற்றுகிறது…

`promisedVersion(n)` என்பதை வரையறுக்கவும், ஒரு எண்ணைக் கொடுத்தால், n இன் இரட்டிப்பாக தீர்க்கப்பட்ட வாக்குறுதியை வழங்கும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

திரும்ப Promise.resolve(n * 2)

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்

மதிப்பாய்வு பயிற்சி

உடற்பயிற்சி#js.m7.l1.e2
முயற்சிகள்: 0ஏற்றுகிறது…

ஒரு எண்ணின் உறுதிமொழியைப் பெற்று, எண்ணின் உறுதிமொழியை வழங்கும் `incrementThree(p)` ஐ வரையறுக்கவும்.

எடிட்டரை ஏற்றுகிறது…
குறிப்பைக் காட்டு

p.then((n) => n + 3)

3 முயற்சிகளுக்குப் பிறகு தீர்வு கிடைக்கும்