JavaScript'te Promise Durumları
Bir promise üç durumdan birinde bulunabilir. Oluşturulduğunda promise bekliyor (pending) durumundadır, ardından yerine getirilmiş (fulfilled) durumuna geçerek sonucu döndürebilir, ya da reddedilmiş (rejected) durumuna geçerek başarısızlık nedenini döndürebilir. Aşağıdaki kodu çalıştırarak bir durumdan diğerine geçişi gözlemleyebilirsiniz:
let promise = new Promise(function(resolve, reject) {
setTimeout(function() {
let isError = false; // true ya da false değerini girin
if (!isError) {
resolve([1, 2, 3, 4, 5]);
} else {
reject('error in promise');
}
}, 3000);
});
setInterval(function() {
console.log(promise); // her saniye promise'ı konsola yazdır
}, 1000);
fulfilled ve rejected durumlarının değişmez olduğunu unutmayın: eğer bir promise bu durumlardan birine geçerse, artık diğerine geçemez. Bir örnekle inceleyelim. Aşağıdaki kodda reject çağrısı daha erken gerçekleşeceği için resolve çağrısı göz ardı edilecektir:
let promise = new Promise(function(resolve, reject) {
setTimeout(() => reject(new Error('error')), 1000);
setTimeout(() => resolve('ignored'), 2000);
});
Bir süre sonra başarıyla yerine getirilecek bir promise yapın. Konsola yazdırın ve hem başlangıç hem de tamamlanmış durumunu inceleyin.
Bir süre sonra başarısız olacak bir promise yapın. Konsola yazdırın ve hem başlangıç hem de tamamlanmış durumunu inceleyin.