callback fonksiyonları ne demek?

## Callback (Geri Çağırma) Fonksiyonları

**Callback fonksiyonları**, bir başka fonksiyona argüman olarak geçirilen ve bu fonksiyonun içerisinde belirli bir zamanda veya belirli bir koşul sağlandığında çalıştırılan fonksiyonlardır. Esasen, "Bunu yap, sonra şunu yap" mantığını temsil ederler.

**Temel Kavramlar:**

*   **Asenkron Programlama:** Callback'ler, özellikle [asenkron programlama](https://www.nedemek.page/kavramlar/asenkron%20programlama) senaryolarında sıklıkla kullanılır. Bu senaryolarda, bir işlemin tamamlanması zaman alabilir (örneğin, bir ağ isteği veya dosya okuma). Callback, bu işlemin tamamlandığını bildirmek ve sonuçları işlemek için kullanılır.

*   **Event Handling (Olay İşleme):** Web tarayıcılarında, kullanıcı etkileşimleri (tıklamalar, tuş vuruşları, vb.) olaylar (event) olarak adlandırılır. Callback fonksiyonları, bu olaylar gerçekleştiğinde tetiklenir ve ilgili işlemleri gerçekleştirir. Bu, [event%20handling](https://www.nedemek.page/kavramlar/event%20handling) olarak bilinir.

*   **Yüksek Dereceli Fonksiyonlar (Higher-Order Functions):** Callback kullanan fonksiyonlar genellikle "yüksek dereceli fonksiyonlar" olarak adlandırılır. Çünkü bu fonksiyonlar, başka fonksiyonları argüman olarak kabul ederler. JavaScript'teki `map`, `filter`, ve `reduce` gibi dizi metotları, yüksek dereceli fonksiyonlara örneklerdir ve genellikle callback'lerle birlikte kullanılırlar.

**Kullanım Alanları:**

*   **Zamanlayıcılar (Timers):** `setTimeout` ve `setInterval` gibi fonksiyonlar, belirli bir süre sonra veya belirli aralıklarla bir callback fonksiyonunu çalıştırmak için kullanılır.

*   **Ağ İstekleri (Network Requests):**  Bir sunucuya yapılan HTTP isteği tamamlandığında, sunucudan gelen yanıtı işlemek için bir callback fonksiyonu kullanılır.

*   **Animasyonlar:**  Animasyonlar oluşturmak için, her kareyi çizmek üzere bir callback fonksiyonu kullanılabilir.

**Avantajları:**

*   **Esneklik:** Callback'ler, bir fonksiyonun davranışını, çağıran kod tarafından belirlenen farklı durumlara göre özelleştirme imkanı sunar.
*   **Asenkron Yönetimi:** Uzun süren işlemleri engellemeden (blocking) yönetmeyi sağlar.
*   **Kodun Yeniden Kullanılabilirliği:** Aynı fonksiyon, farklı callback'lerle farklı amaçlar için kullanılabilir.

**Dezavantajları:**

*   **Callback Hell (Geri Çağırma Cehennemi):** Çok sayıda iç içe geçmiş callback fonksiyonu, kodun okunabilirliğini ve bakımı zorlaştırabilir. Bu sorun, [promise'ler](https://www.nedemek.page/kavramlar/promise'ler) ve [async/await](https://www.nedemek.page/kavramlar/async%20await) gibi yapılarla çözülmeye çalışılmıştır.

*   **Hata Yönetimi:** Callback'lerdeki hataları yönetmek, özellikle iç içe geçmiş callback'lerde zor olabilir.