Исклучоци во асинхрони колбекови во 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);
}