Promise Ne Demek?
Yayın: · Son güncelleme:
Promise Ne Demek? Kısaca
Promise, ileride tamamlanacak bir asenkron işlemin sonucunu temsil eden nesnedir. İşlem sürerken bekleyen durumda olur, sonra başarıyla tamamlanır ya da hatayla reddedilir.

Promise ne demek?
Promise, İngilizcede "söz" anlamına gelir ve programlamada henüz bitmemiş bir işlemin gelecekteki sonucunu temsil eder. Bir API'den veri istediğinizde sonuç hemen gelmez. Elinize önce bu söz geçer ve kodunuz, sonucun ne zaman geleceğini bilmeden onun üzerine plan yapabilir. Sonuç geldiğinde söz yerine getirilir ya da bir hata nedeniyle bozulur.
Hangi durumları alır?
Üç durum vardır. Pending, işlemin hâlâ sürdüğü bekleme durumudur. Fulfilled, işlemin başarıyla tamamlanıp değer ürettiği durumdur.
Rejected ise bir hata nedeniyle işlemin başarısız olduğu durumdur; örneğin sunucuya hiç ulaşılamadığında ya da yanıt bozuk geldiğinde Promise bu duruma geçer ve hata nesnesini taşır. Sonuçlanan bir Promise'in durumu bir daha değişmez. Bu kural önemlidir.
Nasıl kullanılır?
JavaScript'te sonuçla ne yapılacağını .then() ile, hatayla ne yapılacağını .catch() ile belirtirsiniz. Örneğin fetch("/api/kur").then(y => y.json()).then(veri => goster(veri)).catch(h => uyar(h)) zinciri, döviz kuru verisini ister, gelirse ekrana basar, gelmezse uyarı gösterir. Bu zincir, iç içe callback yapısına göre çok daha düz okunur.
Bugün pek çok geliştirici aynı işi async/await ile yazar. Bu yazım da arka planda Promise kullanır, bu yüzden Promise mantığını anlamak async/await'i anlamanın temelidir.
Nelere dikkat etmeli?
Her Promise zincirinin sonuna bir hata yakalayıcı ekleyin. Yakalanmayan reddedilmiş Promise'ler tarayıcı konsolunda uyarı üretir ve kullanıcı neyin bozulduğunu anlamaz. Birden çok bağımsız isteğiniz varsa, bunları tek tek beklemek yerine Promise.all ile birlikte başlatmayı değerlendirin.
Sıkça Sorulan Sorular
Promise nedir, kısaca?
Promise, "sonucu şimdi değil ama ileride vereceğim" diyen bir nesnedir. Sonuç gelince then ile, hata olursa catch ile ne yapılacağını belirlersiniz.
Promise.all ne işe yarar?
Birden çok Promise'i aynı anda başlatır ve hepsi tamamlandığında sonuçları bir dizi olarak verir. İçlerinden biri başarısız olursa toplam sonuç da hata olarak döner.