Stany promisa w JavaScript

Promis może znajdować się w jednym z trzech stanów. Podczas tworzenia promis jest w stanie oczekiwania (pending), a następnie może zostać spełniony (fulfilled), zwracając uzyskany wynik, lub odrzucony (rejected), zwracając przyczynę odrzucenia. Możesz obserwować przejście z jednego stanu do drugiego, uruchamiając następujący kod:

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

setInterval(function() {
  console.log(promise); // co sekundę wypisujemy promis w konsoli
}, 1000);

Należy pamiętać, że stany fulfilled i rejected są niezmienne: jeśli promis przeszedł do jednego z tych stanów, to nie będzie już mógł przejść do innego. Spójrzmy na przykład. W następnym kodzie wywołanie reject nastąpi wcześniej, więc wywołanie resolve zostanie zignorowane:

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

Stwórz promis, który wykona się z sukcesem po pewnym czasie. Wypisz go w konsoli i zbadaj jego stan początkowy oraz stan po zakończeniu.

Задание 2

Stwórz promis, który wykona się niepowodzeniem po pewnym czasie. Wypisz go w konsoli i zbadaj jego stan początkowy oraz stan po zakończeniu.