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:

javascriptlet 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:

javascriptlet 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):

javascriptpromise.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:

javascriptpromise.then(function(result) {
  console.log(result); // vypíše výsledok promisu
}, function(error) {
  console.log(error);  // vypíše text chyby
});
Задание 1

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.