CodeBlanks Logo Icon CodeBlanks

Promise nedir?

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

index.js
// Bir Promise oluştur
// setTimeout ile bir mesaj yazdır ve resolve çağır

Örnek çözüm

index.js
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

Soru
const p = new Promise((resolve, reject) => {
  setTimeout(() => ____("tamam"), 100);
});
Cevap
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

Başlangıç bölümündeki tüm dersler