Poikkeustilanteet promisseissa JavaScriptissä

Opitaan nyt käsittelemään promisissa tapahtuneita poikkeustilanteita. Tällaisen tilanteen sattuessa meidän tulee hylätä promisi käyttämällä erityistä hylkäämisfunktiota, joka automaattisesti siirtyy promisin funktion toiseen parametriin:

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

Promisin funktion sisällä meidän tulee kutsua resolve, jos kaikki sujui normaalisti, tai reject, jos tapahtui poikkeustilanne:

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

Sitten then-metodissa sinun tulee passata parametreina ei yhtä, vaan kaksi funktiota: ensimmäinen toimii, jos promisi suoritettiin normaalisti (resolved), ja toinen - jos se suoritettiin virheellisesti (rejected):

javascriptpromise.then(
  function(result) {
    console.log(result); // tulostaa promisin tuloksen
  },
  function(error) {
    console.log(error);  // tulostaa virhetekstin
  }
);

Yleensä edellä esitetty koodi kirjoitetaan kompaktimmin, näin:

javascriptpromise.then(function(result) {
  console.log(result); // tulostaa promisin tuloksen
}, function(error) {
  console.log(error);  // tulostaa virhetekstin
});
Задание 1

Tee asynkroninen koodi, joka generoi satunnaislukuja välillä 0 - 5. Kääri kaikki tämä promisiin. Anna promisin palauttaa tuloksenaan yksikön jakamisen tulos generoidulla luvulla. Anna promisin suorittua virheellä, jos tapahtui jako nollalla, ja onnistuneesti kaikissa muissa tapauksissa.