Promise'i olekud JavaScriptis
Promise võib olla ühes kolmest olekust. Loomisel on Promise ootel (pending), seejärel võib see muutuda täidetuks (fulfilled), tagastades saadud tulemuse, või tagasi lükatud (rejected), tagastades eitumise põhjuse. Saate vaadata üleminekut ühest olekust teise, käivitades järgmise koodi:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false; // määra kas true või false
if (!isError) {
resolve([1, 2, 3, 4, 5]);
} else {
reject('viga promises');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // iga sekund väljastame Promise'i konsooli
}, 1000);
Pidage meeles, et olekud fulfilled ja rejected on muutumatud: kui Promise on läinud ühte neist olekutest, siis ei saa see enam minna teise. Vaatame näidet. Järgmises koodis juhtub reject kutse varem, seega resolve kutset ignoreeritakse:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('viga')), 1000);
setTimeout(() => resolve('ignoreeritud'), 2000);
});
Tehke Promise, mis täidetakse edukalt mõne aja pärast. Väljastage see konsooli ja uurige selle algset olekut ja lõppolekut.
Tehke Promise, mis eitatakse mõne aja pärast. Väljastage see konsooli ja uurige selle algset olekut ja lõppolekut.