⊗jsSpACEx 158 of 294 menu

Izņēmumi asinhronajos izsaukumos JavaScript

Pieņemsim, ka, ja parametram make nodots neesoša masīva elementa numurs - tā ir izņēmuma situācija. Kā jūs jau zināt, izņēmumi, kas radušies asinhronas funkcijas iekšienē, nevar tikt noķerti ar try-catch. Mūsu gadījumā izņēmums, kas radies iekšpus make vai izsaukuma, netiks noķerts:

try { make(10, function(res) { console.log(res); }); } catch(err) { // netiks noķerts }

Izsaukuma pieejā ar izņēmumiem strādā šādi: pirmajā izsaukuma parametrā nosūta rezultātu, bet otrajā - kļūdu. Šajā gadījumā kļūdu apstrāde notiek šādi:

make(10, function(res, err) { if (!err) { console.log(res); // kļūda neradās, izvadīsim rezultātu } else { console.log(err); // kļūda radās, izvadīsim tās tekstu } });

Pārveidosim mūsu funkcijas make kodu atbilstoši aprakstītajam:

function make(num, callback) { setTimeout(function() { let arr = [1, 2, 3, 4, 5]; let err; if (arr[num] === undefined) { err = 'elem not exists'; // kļūdas teksts } else { err = null; // kļūdas nav } callback(arr[num], err); }, 3000); }
Latviešu
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Mēs izmantojam sīkdatnes, lai nodrošinātu vietnes darbību, analīti un personalizāciju. Datu apstrāde notiek saskaņā ar Konfidencialitātes politiku.
pieņemt visus iestatīt noraidīt