“Callback Function” Kavramı Nedir?
Bu yazımızda, “callback function” kavramı derinlemesine incelenecektir. Bu kavramın ne olduğunu, neden önemli olduğunu detaylarıyla ele alacağız. Eğer fonksiyonların birbirleriyle nasıl etkileşimde bulunduğunu ve asenkron programlamanın arkasındaki mekanizmaları merak ediyorsanız, doğru yerdesiniz.
“Callback Function” Nedir?
İngilizcede “geri çağırmak” anlamına gelen “callback” terimi, programlama dünyasında biraz daha özelleşmiştir. “Callback function“, yani geri çağırma fonksiyonu kavramı, bir işlemin tamamlandığında ne yapılması gerektiğini belirleyen fonksiyona denir.
Genellikle bir fonksiyonun içerisinde, başka bir fonksiyona argüman olarak verilir ve bu ana fonksiyonun belirli bir işlemi tamamlaması durumunda çağrılır.
Zaten birçok programlama dilinde ve kütüphanede, belirli bir işlemin tamamlanmasının ardından gerçekleştirilmesi gereken işlemler için “callback” fonksiyonlarına ihtiyaç duyulur. Özellikle olay tabanlı programlama veya asenkron işlemler söz konusu olduğunda, callback’ler çok ama çok yararlıdır.
Diyelim ki bir liste üzerinde belirli bir koşulu sağlayan elemanları filtrelemek için bir fonksiyon yazıyoruz. Bu fonksiyon, hangi koşulun kontrol edileceğini belirlemek için bir “callback” fonksiyonu alsın. Bunu JavaScript kullanarak aşağıdaki gibi yazabiliriz:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function filtrele(liste, kontrolFonksiyonu) { let sonuc = []; for (let eleman of liste) { if (kontrolFonksiyonu(eleman)) { sonuc.push(eleman); } } return sonuc; } const sayilar = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; const ciftSayilar = filtrele(sayilar, function(sayi) { return sayi % 2 === 0; }); console.log(ciftSayilar); // [2, 4, 6, 8, 10] |
Yukarıdaki örneğimizde, filtrele
fonksiyonu, parametre olarak bir liste ve bir (kontrol) fonksiyon almaktadır. Kontrol fonksiyonu (callback fonksiyonu), liste üzerindeki her eleman için çağrılır ve bu elemanın sonuç listesine eklenip eklenmeyeceğini belirler. Bu sayede, filtrele
fonksiyonu genel bir işlevsellik sunar ve hangi koşulun kullanılacağını belirtmek için bir “callback” fonksiyonu alır. Bu örnekte, sadece çift sayıları filtrelemek için bir “callback” fonksiyonu sağladık.
“Callback function” kavramı, özellikle asenkron işlemler, yani dosya okuma, ağ istekleri veya belirli zaman aralıklarında gerçekleşen işlemler sırasında sıkça kullanılır. Aslında, callback’ler, bir işlemin sonucunda ne yapılacağını belirleyen programlama yaklaşımının temel taşlarından biridir desek yeridir.
1 2 3 4 5 6 7 8 9 10 11 12 |
function islemTamamlandiginda() { console.log("İşlem tamamlandı!"); } function uzunSurenIslem(callback) { // Burada uzun süren bir işlem simülasyonu yapalım setTimeout(function() { callback(); // İşlem tamamlandığında callback fonksiyonunu çağırıyoruz. }, 3000); // 3 saniye bekleyelim } uzunSurenIslem(islemTamamlandiginda); //"İşlem tamamlandı!" |
Yukarıdaki örnekte, uzunSurenIslem
fonksiyonu, bir “callback” fonksiyonu alır. Bu callback fonksiyonu, setTimeout
ile simüle edilen uzun süren bir işlem tamamlandığında çağrılır.
Bu yaklaşım, programlamada birçok farklı senaryoda kullanılır, çünkü genellikle bir işlemin tamamlanmasının ardından bir sonraki adımın ne olacağını belirtmemiz gerekir. İşte tam da bu, callback’lerin temel kullanılma amacıdır.