⊗jsSpACEx 158 of 294 menu

Изключения в асинхронни callback функции в JavaScript

Нека, ако като параметър на make е подаден номер на несъществуващ елемент от масив - това да бъде изключителна ситуация. Както вече знаете, изключенията, възникнали вътре в асинхронна функция, не могат да бъдат хванати чрез try-catch. В нашия случай изключение, възникнало вътре в make или callback функцията, няма да бъде хванато:

try { make(10, function(res) { console.log(res); }); } catch(err) { // няма да се хване }

При callback подхода с изключенията се работи по следния начин: в първия параметър на callback функцията се изпраща резултат, а във втория - грешка. В този случай обработката на грешки се извършва по следния начин:

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
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне