# Async/Await

Adres: https://softwaredictionary.org/tr/terimler/async-await
Kategori: Programlamanın Temelleri
Son güncelleme: 2026-09-29
Okunuşu: eysink ıveyt

Kısaca: Async/await, asenkron kodu sıradan adım adım kod gibi okunur biçimde yazmayı sağlayan, her await'te bir promise ya da görev bitene dek duran sözdizimidir.

## Async/await nedir?

Async/await, ağ istekleri ya da dosya okuma gibi şeyleri bekleyen asenkron kodu yazmayı ve okumayı kolaylaştıran bir anahtar sözcük çiftidir. Bir fonksiyonu `async` ile işaretler, içinde de zaman alan bir işlemin önüne `await` koyarsınız. Fonksiyon o satırda sonuç hazır olana dek duraklar ve değerle devam eder.

JavaScript'te async/await promise'lar üzerine kuruludur. `async` bir fonksiyon her zaman bir promise döndürür; `await` ise bir promise sonuçlanana dek bekler ve size değerini verir ya da hatasını fırlatır. Bu sayede başarısızlıkları `.catch()` çağrılarını zincirlemek yerine sıradan bir `try/catch` bloğuyla yönetebilirsiniz.

`await` ile duraklamak tüm programı dondurmaz. Bir fonksiyon beklerken çalışma ortamı tıklamalara yanıt vermek ya da başka istekleri işlemek gibi diğer işleri yapmaya devam eder ve sonuç geldiğinde fonksiyonu kaldığı yerden sürdürür. Bu, ocağa bir tencere su koyup suyun ısınmasını izleyerek beklemek yerine sebze doğramaya benzer.

async/await kalıbı C#, Python, Rust, Kotlin ve Swift dahil birçok başka dilde de vardır. Sık yapılan bir hata, birbirinden bağımsız işlemleri art arda beklemektir; bu, onların sırayla çalışmasına yol açar. Birbirine bağlı değillerse hepsini birlikte başlatın ve `Promise.all` ile hepsinin bitmesini bekleyin.

## Önemli noktalar

- `async` bir fonksiyonu asenkron olarak işaretler; JavaScript'te her zaman bir promise döndürür.
- `await`, bir promise sonuçlanana dek yalnızca mevcut fonksiyonu duraklatır, tüm programı değil.
- Hatalar sıradan `try/catch` blokları ile yönetilebilir.
- Birbirinden bağımsız işlemleri tek tek beklemek yerine paralel çalıştırmak için `Promise.all` kullanın.

## Örnek: async/await ile veri yüklemek

```javascript
// An async function can use await inside it
async function loadUser(id) {
  try {
    const response = await fetch(`https://api.example.com/users/${id}`);
    if (!response.ok) throw new Error("HTTP " + response.status);
    return await response.json(); // wait for the body to be parsed
  } catch (error) {
    console.error("Could not load user:", error);
  }
}

// Run two independent requests at the same time
const [first, second] = await Promise.all([loadUser(1), loadUser(2)]);
```

## Sık sorulan sorular

**await ana iş parçacığını (main thread) bloke eder mi?**

Hayır. `await` yalnızca içinde bulunduğu async fonksiyonu duraklatır; tarayıcının kullanıcı arayüzü dahil programın geri kalanı çalışmaya devam eder. Fonksiyon, beklenen promise sonuçlandığında kaldığı yerden sürer.

**await'i async fonksiyonun dışında kullanabilir miyim?**

Modern JavaScript'te ES modüllerinde doğrudan üst düzey (top-level) `await` kullanabilirsiniz. Klasik betiklerde ve CommonJS dosyalarında `await` bir `async` fonksiyonun içinde olmalıdır.

**async/await ile promise'lar arasındaki fark nedir?**

Async/await, promise'ların üzerine kurulu bir sözdizimidir; onların yerine geçmez. Aynı promise tabanlı mantığı daha doğrusal ve okunaklı bir biçimde yazmanızı sağlar.

## Kaynaklar

- [MDN: async function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function)

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
