Ana içeriğe geç

Callback

Geri çağırma fonksiyonu

Okunuşu
kolbek
Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/callback

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.

Bir bakışta

Zaman içinde bir callback: kodunuz readFile'ı çağırır ve ona onDone adlı bir fonksiyon verir; kodunuz devam ederken readFile dosyayı okur, dosya hazır olunca da onDone'ı veriyle çağırır.kodunuzreadFilereadFile(path, onDone)devam ederonDone'ı verirdosyayı okur…geri çağırıronDone(data) çalışırzaman
Sonucu beklemezsiniz: sonuçla çağrılacak bir fonksiyon bırakırsınız. Promise'ler ve async/await aynı fikri daha düzenli yazmanın yollarıdır.

Ö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.

Sık karşılaştırılanlar

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar