Stavy promise v JavaScriptu

Promise může být v jednom ze tří stavů. Při vytvoření je promise čekající (pending), a pak se může stát splněným (fulfilled), čímž vrátí získaný výsledek, nebo zamítnutým (rejected), čímž vrátí důvod odmítnutí. Přechod z jednoho stavu do druhého můžete vidět spuštěním následujícího kódu:

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

setInterval(function() {
  console.log(promise); // každou sekundu vypíšeme promise do konzole
}, 1000);

Mějte na paměti, že stavy fulfilled a rejected jsou neměnné: pokud promise přešel do jednoho z těchto stavů, už se nemůže přepnout do druhého. Podívejme se na příklad. V následujícím kódu se volání reject stane dříve, proto bude volání resolve ignorováno:

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

Vytvořte promise, který bude úspěšně splněn po určité době. Vypište jej do konzole a prostudujte jeho počáteční stav a dokončený stav.

Задание 2

Vytvořte promise, který skončí neúspěchem po určité době. Vypište jej do konzole a prostudujte jeho počáteční stav a dokončený stav.