JavaScript-də Promise-in vəziyyətləri
Promise üç vəziyyətdən birində ola bilər. Yaradıldıqda Promise gözləmə vəziyyətində olur (pending), sonra isə yerinə yetirilmiş (fulfilled) vəziyyətinə keçə bilər və nəticə qaytara bilər, ya da rədd edilmiş (rejected) vəziyyətinə keçə bilər, səbəb qaytara bilər. Aşağıdakı kodu işə salmaqla bir vəziyyətdən digərinə keçidi izləyə bilərsiniz:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false; // ya true, ya da false qoyun
if (!isError) {
resolve([1, 2, 3, 4, 5]);
} else {
reject('error in promise');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // hər saniyə promise-i konsola çıxarırıq
}, 1000);
Nəzərə alın ki, fulfilled və rejected vəziyyətləri dəyişməzdir: əgər promise bu vəziyyətlərdən birinə keçibsə, artıq digərinə keçə bilməz. Nümunəyə baxaq. Aşağıdakı kodda reject çağırışı daha tez baş verəcək, buna görə də resolve çağırışı laqeyd qalınacaq:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('error')), 1000);
setTimeout(() => resolve('ignored'), 2000);
});
Müəyyən müddətdən sonra uğurla yerinə yetiriləcək bir promise yaradın. Onu konsola çıxarın və ilkin vəziyyətini və tamamlanmış vəziyyətini öyrənin.
Müəyyən müddətdən sonra uğursuzluqla nəticələnəcək bir promise yaradın. Onu konsola çıxarın və ilkin vəziyyətini və tamamlanmış vəziyyətini öyrənin.