Promise nedir?
- Node.js kursu
- Başlangıç
- Ders 88/116
- 5 dk
Promise kavramını ve durumlarını öğrenirsin.
Promise nedir?
JavaScript'te uzun süren işlemlerin sonuçunu temsil eden nesne Promise'tür. Bir Promise üç durumdan birinde bulunur: pending (beklemede), fulfilled (tamamlandı) veya rejected (reddedildi). Durum pending'ten fulfilled ya da rejected'e geçer ve bir daha değişmez.
Bir Promise, içine bir executor işlev alan new Promise((resolve, reject) => {...}) biçiminde oluşturulur. İşlem başarılı olunca resolve(value), başarısız olunca reject(error) çağrılır. Bu sayede asenkron sonuçu beklerken programı dondurmazsın; sonuçu geldiğinde işleyecek kodu zincirlersin.
Promise constructor
Bir Promise oluşturmak için new Promise(executor) yazarsın. Executor, iki parametre alır: resolve ve reject. Asenkron iş bittiğinde resolve(deger) ile sonuçu iletirsin; hata olursa reject(hata) ile bildirirsin.
const p = new Promise((resolve, reject) => {
setTimeout(() => resolve("tamam"), 100);
});Burada setTimeout 100 ms sonra resolve çağırır; böylece p fulfilled durumuna geçer. Executor senkron olarak çalışır; resolve ya da reject çağrılana dek Promise pending'te kalır.
Uygulama Sıra sende: Promise oluştur
new Promise((resolve, reject) => {...}) biçiminde bir Promise oluştur. Executor içinde setTimeout ile 10 ms sonra bir mesaj yazdır ve resolve("hazır") çağrısı yap.
Başlangıç kodu
// Bir Promise oluştur
// setTimeout ile bir mesaj yazdır ve resolve çağırÖrnek çözüm
new Promise((resolve, reject) => {
setTimeout(() => {
console.log("çalışıyor");
resolve("hazır");
}, 10);
});Beklenen çıktı
çalışıyor
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Promise'ın durumu pending'ten fulfilled'e geçtikten sonra ne olur?
- Tekrar pending'e dönebilir
- rejected'e geçebilir
- Yeni bir Promise oluşur
- Bir daha değişmez Doğru cevap
Açıklama: Bir Promise fulfilled olduktan sonra durumu sabitlenir.
2 Boşluğu doldur: resolve ile sonuçu ilet
const p = new Promise((resolve, reject) => {
setTimeout(() => ____("tamam"), 100);
});
const p = new Promise((resolve, reject) => {
setTimeout(() => resolve("tamam"), 100);
});
Açıklama: resolve çağrısı Promise'i fulfilled yapar.
3 Promise durumlarını eşleştir
| Kavram | Anlamı |
|---|---|
pending |
beklemede |
fulfilled |
tamamlandı |
rejected |
reddedildi |