Išimtinės situacijos "Promise" objektuose JavaScript

Dabar išmokime apdoroti išimtines situacijas, atsiradusias "Promise" objekte. Tokios situacijos atveju mes turime atminti "promise" naudojant specialią atmetimo funkciją, kuri automatiškai patenka į antrą "promise" funkcijos parametrą:

javascriptlet promise = new Promise(function(resolve, reject) {
  setTimeout(function() {
    ...
  }, 3000);
});

"Promise" funkcijos viduje mes turime išsiųsti resolve, jei viskas praėjo normaliai, arba reject, jei kilo išimtinė situacija:

javascriptlet promise = new Promise(function(resolve, reject) {
  setTimeout(function() {
    let isError = false;
    
    if (!isError) {
      resolve([1, 2, 3, 4, 5]);   // "promise" duomenys
    } else {
      reject('klaida "promise"'); // jūsų klaidos pranešimas
    }
  }, 3000);
});

Tada then metode parametrais turite perduoti ne vieną, o dvi funkcijas: pirmoji veiks, jei "promise" įvykdytas sėkmingai (resolved), o antroji - jei įvykdyta su klaida (rejected):

javascriptpromise.then(
  function(result) {
    console.log(result); // atvaizduos "promise" rezultatą
  },
  function(error) {
    console.log(error);  // atvaizduos klaidos pranešimą
  }
);

Paprastai, aukščiau pateiktas kodas rašomas kompaktiškiau, štai taip:

javascriptpromise.then(function(result) {
  console.log(result); // atvaizduos "promise" rezultatą
}, function(error) {
  console.log(error);  // atvaizduos klaidos pranešimą
});
Задание 1

Sukurkite asinchroninį kodą, kuris generuos atsitiktinius skaičius nuo 0 iki 5. Apgaubkite visą tai "promise" objekte. Tegul "promise" savo rezultatu grąžina vieneto dalybos iš sugeneruoto skaičiaus rezultatą. Tegul "promise" įvykdomas su klaida, jei įvyko dalyba iš nulio, ir sėkmingai visais kitais atvejais.