1️⃣ Temel Kavramlar: Asenkron ve Promise

JavaScript’te işlemler eşzamanlı (synchronous) veya eşzamansız (asynchronous) olarak çalışır.

Promise, asenkron işlemleri temsil eden bir nesnedir:

const promise = new Promise((resolve, reject) => {
  setTimeout(() => {
    resolve("İşlem tamamlandı!");
  }, 1000);
});

promise.then(result => console.log(result)); // 1 saniye sonra "İşlem tamamlandı!"

2️⃣ async Fonksiyon

async kelimesi bir fonksiyonun otomatik olarak Promise döndürmesini sağlar.

async function selamla() {
  return "Merhaba!";
}

selamla().then(msg => console.log(msg)); // "Merhaba!"

Not: async fonksiyonu çağırdığında Promise döner, yani then ile yakalayabiliriz veya await kullanabiliriz.


3️⃣ await Anahtar Kelimesi

await sadece async fonksiyonların içinde kullanılabilir.

Amacı: Promise’in çözülmesini beklemek ve sonucu almak.

function bekle(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function test() {
  console.log("Başladı");
  await bekle(2000); // 2 saniye bekle
  console.log("Bitti");
}

test();

Çıktı:

Başladı
(Bekleme 2 saniye)
Bitti

await olmasaydı "Bitti" hemen yazılırdı, beklemezdi.