⊗jsSpACEx 158 of 294 menu

Poikkeukset asynkronisissa takaisinkutsuissa JavaScriptissä

Oletetaan, että jos make:lle parametrina välitetään taulukon olematon elementin indeksi - se on poikkeustilanne. Kuten jo tiedät, asynkronisen funktion sisällä syntyvät poikkeukset eivät voida napata try-catch-lohkon kautta. Meidän tapauksessamme make:n tai takaisinkutsun sisällä syntyvä poikkeus ei tule napatuksi:

try { make(10, function(res) { console.log(res); }); } catch(err) { // ei nappaa }

Takaisinkutsuperiaatteessa poikkeuksia käsitellään seuraavalla tavalla: takaisinkutsun ensimmäiseen parametriin lähetetään tulos ja toiseen - virhe. Tässä tapauksessa virheiden käsittely tapahtuu seuraavasti:

make(10, function(res, err) { if (!err) { console.log(res); // virhettä ei syntynyt, tulostetaan tulos } else { console.log(err); // virhe syntyi, tulostetaan sen teksti } });

Muokataan koodiamme funktiossa make kuvatun mukaisesti:

function make(num, callback) { setTimeout(function() { let arr = [1, 2, 3, 4, 5]; let err; if (arr[num] === undefined) { err = 'elem not exists'; // virheen teksti } else { err = null; // ei virhettä } callback(arr[num], err); }, 3000); }
Suomi
AfrikaansAzərbaycanБългарскиবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Käytämme evästeitä verkkosivuston toiminnalle, analytiikalle ja personoinnille. Tietojen käsittely tapahtuu Tietosuojakäytännön mukaisesti.
hyväksy kaikki mukauta hylkää