Promisen tilat JavaScriptissä

Promisi voi olla yhdessä kolmesta tilasta. Luomisen yhteydessä promisi on odottavassa tilassa (pending), ja sitten siitä voi tulla täytetty (fulfilled), palauttaen saadun tuloksen, tai hylätty (rejected), palauttaen hylkäyksen syyn. Voit nähdä siirtymisen yhdestä tilasta toiseen suorittamalla seuraavan koodin:

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

setInterval(function() {
  console.log(promise); // tulostamme promisin konsoliin joka sekunti
}, 1000);

Huomaa, että tilat fulfilled ja rejected ovat muuttumattomia: jos promisi on siirtynyt yhteen näistä tiloista, se ei voi enää siirtyä toiseen. Katsotaanpa esimerkkiä. Seuraavassa koodissa reject -kutsu tapahtuu aiemmin, joten resolve -kutsua ei huomioida:

javascriptlet promise = new Promise(function(resolve, reject) {
  setTimeout(() => reject(new Error('error')), 1000);
  setTimeout(() => resolve('ignored'), 2000);
});
Задание 1

Tee promisi, joka suoritetaan onnistuneesti jonkin ajan kuluttua. Tulosta se konsoliin ja tutki sen alkutila ja valmistunut tila.

Задание 2

Tee promisi, joka epäonnistuu jonkin ajan kuluttua. Tulosta se konsoliin ja tutki sen alkutila ja valmistunut tila.