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

ஒத்திசைவற்ற குறியீட்டில் பிழைகள்

ஒத்திசைவற்ற செயல்பாடுகள் ஒத்திசைவற்ற செயல்களில் இருந்து வித்தியாசமாக தோல்வியடைகின்றன: பிழை உடனடியாக வராது, வாக்குறுதி நிராகரிக்கப்பட்ட நிலையில் நுழையும் போது, அது "பின்னர்" வரும். இரண்டு முக்கிய கருவிகளைப் பார்ப்போம்.

try/catch உடன் await

நீங்கள் await என்று ஒரு வாக்குறுதி தோல்வியடையும் போது, பிழையானது மீண்டும் எறியப்படும் சாதாரண விதிவிலக்கு: நீங்கள் அதை try/catch உடன் பிடிக்கிறீர்கள்.

JS
async function safeRead() {
  try {
    const r = await fetch('/api/cose');
    if (!r.ok) throw new Error('HTTP ' + r.status);
    return await r.json();
  } catch (err) {
    console.error('network error:', err.message);
    return null;
  }
}

இது மிகவும் படிக்கக்கூடிய வடிவமாகும்: நீங்கள் "மகிழ்ச்சியான பாதையை" நேர்கோட்டில் எழுதுகிறீர்கள், மேலும் அனைத்தையும் ஒரே தொகுதியில் கையாளுங்கள்.

.catch வாக்குறுதியின் பேரில்

சங்கிலி பாணியில்:

JS
fetch('/api/cose')
  .then((r) => r.json())
  .then((data) => console.log(data))
  .catch((err) => console.error(err));

.catch முந்தைய சங்கிலியில் எறியப்பட்ட எந்தவொரு பிழையையும் பிடிக்கும்.

Promise.all முதல் நிராகரிப்பில் தோல்வியடைந்தது

JS
const ps = [Promise.resolve(1), Promise.reject(new Error('no')), Promise.resolve(3)];
try {
  const r = await Promise.all(ps);
} catch (err) {
  console.log(err.message); // 'no'
}

மற்ற வாக்குறுதிகள் பின்புலத்தில் இயங்கிக் கொண்டே இருக்கும், ஆனால் Promise.all முதல் பிழை "தீர்கிறது". அவை அனைத்தின் முடிவுகளையும் (தோல்விகள் உட்பட) நீங்கள் விரும்பினால், Promise.allSettled ஐப் பயன்படுத்தவும்:

JS
const outcomes = await Promise.allSettled(ps);
// [{ status: 'fulfilled', value: 1 },
//  { status: 'rejected', reason: Error('no') },
//  { status: 'fulfilled', value: 3 }]

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

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

`readOrFallback(p, fallback)` async ஐ வரையறுக்கவும்: Promise pக்காக காத்திருக்க முயற்சிக்கவும்; அது நிராகரிக்கப்பட்டால், பின்னடைவைத் திருப்பித் தரவும்.

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

முயற்சி {திரும்ப காத்திருக்கும் ப; } கேட்ச் {திரும்ப வீழ்ச்சி; }

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

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

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

`allOrNothing(promises)` ஒத்திசைவை வரையறுக்கவும்: Promise.all ஐப் பயன்படுத்தவும். குறைந்தபட்சம் ஒன்று தோல்வியுற்றால், வெற்று வரிசையை [] திருப்பி அனுப்பவும். இல்லையெனில் மதிப்புகளைத் திருப்பி விடுங்கள்.

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

முயற்சி { return waiit Promise.all(promises); } பிடிக்கவும் {திரும்பவும் []; }

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