Erandolukorrad JavaScript'i lubadustes

Õpime nüüd töötlema erandolukordi, mis on tekkinud lubaduse sees. Sellise olukorra tekkimisel peame lubaduse tagasi lükkama spetsiaalse tagasilükkamise funktsiooni abil, mis automaatselt satub lubaduse funktsiooni teise parameetrisse:

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

Lubaduse funktsiooni sees peame kutsuma resolve, kui kõik läks tavapäraselt, või reject, kui tekkis erandolukord:

javascriptlet promise = new Promise(function(resolve, reject) {
  setTimeout(function() {
    let isError = false;
    
    if (!isError) {
      resolve([1, 2, 3, 4, 5]);   // lubaduse andmed
    } else {
      reject('error in promise'); // teie veatekst
    }
  }, 3000);
});

Seejärel meetodis then peaksite parametritena edastama mitte ühe, vaid kaks funktsiooni: esimene töötab, kui lubadus töötas tavapäraselt (resolved), ja teine - kui töötas veaga (rejected):

javascriptpromise.then(
  function(result) {
    console.log(result); // kuvab lubaduse tulemuse
  },
  function(error) {
    console.log(error);  // kuvab veateksti
  }
);

Reeglina kirjutatakse ülaltoodud kood kompaktsemalt, niimoodi:

javascriptpromise.then(function(result) {
  console.log(result); // kuvab lubaduse tulemuse
}, function(error) {
  console.log(error);  // kuvab veateksti
});
Задание 1

Koostage asünkroonne kood, mis genereerib juhuslikke numbreid 0 kuni 5. Mähige kõik see lubadusse. Olgu lubaduse tulemuseks ühe jagamise tulemus genereeritud numbriga. Olgu lubadus täidetud veaga, kui toimub jagamine nulliga, ja edukalt kõigil muudel juhtudel.