Stanja promisa v JavaScript
Promis je lahko v enem od treh stanj. Ob ustvarjanju je promis v stanju čakanja (pending), nato pa lahko preide v izpolnjeno stanje (fulfilled) in vrne dobljeni rezultat, ali v zavrnjeno stanje (rejected) in vrne razlog za zavrnitev. Prehod iz enega stanja v drugo lahko opazite z zagonom naslednje kode:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false; // nastavite na true ali false
if (!isError) {
resolve([1, 2, 3, 4, 5]);
} else {
reject('napaka v promisu');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // vsako sekundo izpišemo promis v konzolo
}, 1000);
Upoštevajte, da sta stanji fulfilled in rejected nespremenljivi: če je promis prešel v eno od teh stanj, ne more več preiti v drugo. Poglejmo si primer. V naslednji kodi se bo klic reject zgodil prej, zato bo klic resolve prezrt:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('napaka')), 1000);
setTimeout(() => resolve('prezrto'), 2000);
});
Naredite promis, ki se bo uspešno izpolnil po določenem času. Izpišite ga v konzolo in preučite njegovo začetno stanje ter končno stanje.
Naredite promis, ki se ne bo uspešno izpolnil po določenem času. Izpišite ga v konzolo in preučite njegovo začetno stanje ter končno stanje.