⊗jsSpACEx 158 of 294 menu

Выключэнні ў асінхронных коллбэках у JavaScript

Няхай, калі параметрам make перададзены нумар неіснуючага элемента масіва - гэта выключная сітуацыя. Як вы ўжо ведаеце, выключэнні, якія ўзніклі ўнутры асінхроннай функцыі, не могуць быць злоўлены праз try-catch. У нашым выпадку выключэнне, якое ўзнікла ўнутры make або коллбэка, не будзе злоўлена:

try { make(10, function(res) { console.log(res); }); } catch(err) { // не зловіцца }

У коллбэк-падыходзе з выключэннямі працуюць наступным чынам: у першы параметр коллбэка адпраўляюць вынік, а ў другі - памылку. У гэтым выпадку апрацоўка памылак адбываецца наступным чынам:

make(10, function(res, err) { if (!err) { console.log(res); // памылкі не ўзнікла, вывядзем вынік } else { console.log(err); // памылка ўзнікла, вывядзем яе тэкст } });

Давайце пераробім код нашай функцыі make у адпаведнасці з апісаным:

function make(num, callback) { setTimeout(function() { let arr = [1, 2, 3, 4, 5]; let err; if (arr[num] === undefined) { err = 'elem not exists'; // тэкст памылкі } else { err = null; // памылкі няма } callback(arr[num], err); }, 3000); }
Беларуская
AfrikaansAzərbaycanБългарскиবাংলাČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Мы выкарыстоўваем cookie для працы сайта, аналітыкі і персаналізацыі. Апрацоўка дадзеных адбываецца згодна Палітыкай канфідэнцыяльнасці.
прыняць усе наладзіць адхіліць