Stanja promisa u JavaScript-u
Promis može biti u jednom od tri stanja. Prilikom kreiranja, promis je na čekanju (pending), a zatim može postati ispunjen (fulfilled), vraćajući dobijeni rezultat, ili odbijen (rejected), vraćajući razlog neuspeha. Možete videti prelazak iz jednog stanja u drugo pokretanjem sledećeg koda:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false; // postavite ili true ili false
if (!isError) {
resolve([1, 2, 3, 4, 5]);
} else {
reject('greška u promisu');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // svake sekunde prikazujemo promis u konzoli
}, 1000);
Imajte u vidu da su stanja fulfilled i rejected nepromenljiva: ako promis pređe u jedno od ovih stanja, onda više ne može preći u drugo. Pogledajmo na primeru. U sledećem kodu poziv reject će se desiti ranije, pa će poziv resolve biti zignorisan:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('greška')), 1000);
setTimeout(() => resolve('ignorisan'), 2000);
});
Napravite promis koji će se uspešno izvršiti posle nekog vremena. Prikažite ga u konzoli i proučite njegovo početno stanje i završno.
Napravite promis koji će se izvršiti sa neuspehom posle nekog vremena. Prikažite ga u konzoli i proučite njegovo početno stanje i završno.