# Callback (Geri çağırma fonksiyonu)

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

Kısaca: Callback, başka bir fonksiyona argüman olarak verilen ve o fonksiyonun bir iş bittiğinde ya da bir olay gerçekleştiğinde sonradan çağırdığı fonksiyondur.

## Callback nedir?

Callback, başka bir fonksiyona verdiğiniz ve doğru anda 'geri çağrılabilen' bir fonksiyondur. Onu alan fonksiyon ne zaman çalıştıracağına karar verir: hemen, bir iş bittikten sonra ya da bir olay her gerçekleştiğinde. JavaScript gibi dillerde bu mümkündür, çünkü fonksiyonlar diğer değerler gibi taşınabilir.

Kalabalık bir restoranda telefon numaranızı bırakmak callback için iyi bir benzetmedir. Kapıda beklemek yerine gününüze devam edersiniz, masanız hazır olduğunda da sizi geri ararlar. Kodda callback'ler tam olarak böyle kullanılır: düğme tıklamalarına yanıt vermek, bir dosyayı okumanın sonucunu işlemek ya da `array.map(callback)` örneğindeki gibi davranışı özelleştirmek için.

Callback'ler senkron ya da asenkron olabilir. Senkron callback, `forEach` veya `map` örneklerinde olduğu gibi çağrı sırasında hemen çalışır. Asenkron callback ise bir zamanlayıcı, ağ isteği ya da dosya okuma gibi bir işlem tamamlandıktan sonra çalışır.

Birçok iç içe asenkron callback'e güvenmek, derin girintili ve okuması zor, 'callback hell' olarak bilinen bir koda yol açabilir. Promise'lar ve async/await, JavaScript'e büyük ölçüde bunu çözmek için eklendi; ancak callback'ler, özellikle olay dinleyicilerinde ve dizi metotlarında hâlâ her yerde.

## Önemli noktalar

- Callback, daha sonra çalıştırılmak üzere başka bir fonksiyona verilen fonksiyondur.
- Callback'in ne zaman ve kaç kez çalışacağını onu alan fonksiyon belirler.
- Callback'ler senkron (`map` gibi) ya da asenkron (`setTimeout` gibi) olabilir.
- Derin iç içe asenkron callback'ler 'callback hell' yaratır; promise'lar ve async/await bunu önlemeye yardımcı olur.

## Örnek: Üç yaygın callback türü

```javascript
// Synchronous callback: runs once for each item, right away
const prices = [10, 20, 30];
const withTax = prices.map((price) => price * 1.2);

// Asynchronous callback: runs later, after 1 second
setTimeout(() => {
  console.log("One second has passed");
}, 1000);

// Event callback: runs every time the button is clicked
button.addEventListener("click", () => console.log("Clicked!"));
```

## Sık sorulan sorular

**Callback ile promise arasındaki fark nedir?**

Callback, iş bittiğinde çağrılsın diye verdiğiniz bir fonksiyondur. Promise ise o işin gelecekteki sonucunu temsil eden bir nesnedir; `.then()` ile zincirleyebilir ya da `await` ile bekleyebilirsiniz. Promise'lar, iç içe callback'lere göre sıralamayı ve hata yönetimini çok daha basit hâle getirir.

**Callback hell nedir?**

Callback hell, birçok asenkron callback'in birbirinin içine yerleştirilerek okunması, hata ayıklaması ve hataların yönetilmesi zor bir piramit biçimi oluşturduğu koddur. Genellikle promise'lara ya da async/await'e geçilerek çözülür.

**Callback'ler her zaman asenkron mudur?**

Hayır. `map`, `filter` ve `forEach` gibi dizi metotlarına verilen callback'ler senkron çalışır, yani çağrı sırasında hemen yürütülür. Yalnızca zamanlayıcılara, olaylara veya girdi/çıktı işlemlerine bağlı callback'ler asenkron çalışır.

---

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