CodeBlanks Logo Icon CodeBlanks

Promise nedir?

JavaScript kursu · Orta seviye · Ders 72/134

Promise'in pending, fulfilled ve rejected durumlarını öğrenirsin.

Promise nedir?

Bir promise, asenkron bir işlemin ileride üreteceği sonucu temsil eden nesnedir. Üç durumdan birinde bulunur: pending (beklemede), fulfilled (tamamlandı) veya rejected (reddedildi).

Bir promise yerleştiğinde (settled) artık değişmez: tamamlandıktan sonra tekrar beklemede dönemez. Bu sabitlik, callback hell'in yarattığı karışıklığı önler ve zincirleme kurmayı kolaylaştırır. Promise'ler callback'lerin yerini alan modern çözümdür.

Promise oluşturma

Bir promise new Promise ile oluşturulur. Yapıcı fonksiyon, resolve ve reject adlı iki parametre alan bir fonksiyon alır. İşlem başarılıysa resolve'u değerle çağırırsın; başarısızsa reject'i hatayla çağırırsın.

const order = new Promise((resolve, reject) => {
  if (inStock) {
    resolve('gönderildi');
  } else {
    reject('stokta yok');
  }
});

resolve ve reject yalnızca bir kez çağrılır; sonraki çağrılar yok sayılır.

Uygulama Stok denetimi promise'i yaz

checkStock adlı bir fonksiyon yaz. Fonksiyon quantity parametresi alsın ve bir Promise döndürsün. quantity 0'dan büyükse resolve'u true ile çağır; değilse reject'i 'stokta yok' dizesiyle çağır.

Örnek çözümü göster
function checkStock(quantity) {
  return new Promise((resolve, reject) => {
    if (quantity > 0) {
      resolve(true);
    } else {
      reject('stokta yok');
    }
  });
}

Kendini test et

  1. Bir promise 'fulfilled' duruma geçtikten sonra ne olur?

    • Tekrar pending'e dönebilir
    • Durumu sabit kalır ve değeri değişmez
    • Otomatik olarak rejected olur
    • Yeni bir promise oluşturmalı
    Cevabı göster

    Durumu sabit kalır ve değeri değişmez — Doğru! Bir promise yerleştiğinde durumu ve değeri sabit kalır.

  2. Promise'i başarıyla tamamla

    const loaded = new Promise((resolve, reject) => {
      ____;
    });
    Cevabı göster
    const loaded = new Promise((resolve, reject) => {
      resolve(data);
    });
  3. Durumları anlamlarıyla eşleştir

    pending
    Sonuç henüz bekleniyor
    fulfilled
    İşlem başarılı, değer hazır
    rejected
    İşlem başarısız, hata var

Orta seviye bölümündeki tüm dersler