Výnimkové situácie v promisoch v JavaScripte
Poďme sa teraz naučiť spracovávať výnimkové situácie, ktoré nastali vnútri promisu. V prípade vzniku takejto situácie musíme zamietnuť promis pomocou špeciálnej funkcie zamietnutia, ktorá automaticky prechádza do druhého parametra funkcie promisu:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
...
}, 3000);
});
Vnútri funkcie promisu musíme zavolať
resolve, ak všetko prebehlo normálne, alebo
reject, ak nastala výnimková
situácia:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false;
if (!isError) {
resolve([1, 2, 3, 4, 5]); // dáta promisu
} else {
reject('error in promise'); // váš text chyby
}
}, 3000);
});
Potom v metóde then parametrami musíte
odovzdať nie jednu, ale dve funkcie: prvá zafunguje,
ak promis fungoval normálne (zarezolvoval sa),
a druhá - ak fungoval s chybou (zarejektoval sa):
promise.then(
function(result) {
console.log(result); // vypíše výsledok promisu
},
function(error) {
console.log(error); // vypíše text chyby
}
);
Spravidla sa vyššie uvedený kód zapisuje kompaktnejšie, takto:
promise.then(function(result) {
console.log(result); // vypíše výsledok promisu
}, function(error) {
console.log(error); // vypíše text chyby
});
Vytvorte asynchrónny kód, ktorý bude generovať
náhodné čísla od 0 do 5.
Zabaľte to všetko do promisu. Nech promis svojím výsledkom
vráti výsledok delenia jednotky vygenerovaným
číslom. Nech sa promis vykoná s chybou,
ak došlo k deleniu nulou, a s úspechom
vo všetkých ostatných prípadoch.