⊗jsSpACEx 158 of 294 menu

Wyjątki w asynchronicznych callbackach w JavaScript

Załóżmy, że jeśli parametrem make przekazano indeks nieistniejącego elementu tablicy - jest to sytuacja wyjątkowa. Jak już wiesz, wyjątki powstałe wewnątrz asynchronicznej funkcji nie mogą być przechwycone przez try-catch. W naszym przypadku wyjątek, który powstał wewnątrz make lub callbacka, nie zostanie przechwycony:

try { make(10, function(res) { console.log(res); }); } catch(err) { // nie przechwyci się }

W podejściu callbackowym z wyjątkami pracuje się następująco: do pierwszego parametru callbacka wysyła się wynik, a do drugiego - błąd. W tym przypadku obsługa błędów odbywa się następująco:

make(10, function(res, err) { if (!err) { console.log(res); // błąd nie wystąpił, wypiszemy wynik } else { console.log(err); // błąd wystąpił, wypiszemy jego treść } });

Przeróbmy kod naszej funkcji make zgodnie z opisem:

function make(num, callback) { setTimeout(function() { let arr = [1, 2, 3, 4, 5]; let err; if (arr[num] === undefined) { err = 'elem not exists'; // treść błędu } else { err = null; // brak błędu } callback(arr[num], err); }, 3000); }
Polski
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wykorzystujemy pliki cookie do działania strony, analizy i personalizacji. Przetwarzanie danych odbywa się zgodnie z Polityką prywatności.
zaakceptuj wszystkie dostosuj odrzuć