⊗jsSpACEx 158 of 294 menu

Uitzonderingen in asynchrone callbacks in JavaScript

Stel dat als aan de parameter make een nummer van een niet-bestaand array-element wordt doorgegeven - dit een uitzonderlijke situatie is. Zoals je al weet, kunnen uitzonderingen die ontstaan binnen een asynchrone functie, niet worden opgevangen via try-catch. In ons geval zal de uitzondering die ontstaat binnen make of de callback, niet worden opgevangen:

try { make(10, function(res) { console.log(res); }); } catch(err) { // wordt niet opgevangen }

In de callback-aanpak werkt men met uitzonderingen als volgt: naar de eerste parameter van de callback wordt het resultaat gestuurd, en naar de tweede - de fout. In dit geval verloopt de foutafhandeling als volgt:

make(10, function(res, err) { if (!err) { console.log(res); // er was geen fout, toon het resultaat } else { console.log(err); // er was een fout, toon de tekst ervan } });

Laten we de code van onze functie make aanpassen volgens de beschreven aanpak:

function make(num, callback) { setTimeout(function() { let arr = [1, 2, 3, 4, 5]; let err; if (arr[num] === undefined) { err = 'elem not exists'; // fouttekst } else { err = null; // geen fout } callback(arr[num], err); }, 3000); }
Nederlands
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Wij gebruiken cookies voor de werking van de site, analyse en personalisatie. De verwerking van gegevens gebeurt volgens het Privacybeleid.
alles accepteren aanpassen weigeren