Stavy promisu v JavaScripte
Promis môže byť v jednom z troch stavov. Pri vytvorení je promis v stave čakania (pending), potom sa môže stať splneným (fulfilled), čím vráti získaný výsledok, alebo zamietnutým (rejected), čím vráti dôvod zlyhania. Prechod z jedného stavu do druhého môžete vidieť spustením nasledujúceho kódu:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false; // nastavte buď true, alebo false
if (!isError) {
resolve([1, 2, 3, 4, 5]);
} else {
reject('error in promise');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // každú sekundu vypíšeme promis do konzoly
}, 1000);
Majte na pamäti, že stavy fulfilled a rejected sú nemenné: ak promis prešiel do jedného z týchto stavov, už nemôže prejsť do druhého. Pozrime sa na príklad. V nasledujúcom kóde sa volanie reject stane skôr, preto volanie resolve bude ignorované:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('error')), 1000);
setTimeout(() => resolve('ignored'), 2000);
});
Vytvorte promis, ktorý sa úspešne vykoná o nejaký čas. Vypíšte ho do konzoly a preštudujte si jeho počiatočný stav a dokončený stav.
Vytvorte promis, ktorý zlyhá o nejaký čas. Vypíšte ho do konzoly a preštudujte si jeho počiatočný stav a dokončený stav.