javaScript Callback Fonksiyon

Bir değişkene anonim bir fonksiyon atanabilir. Bu nedenle, bir değişkene atanan herhangi bir veri gibi, bir fonksiyonda diğer fonksiyonlara Argüman olarak geçirilebilir. Böyle bir fonksiyon bir geri çağırma fonksiyon olarak bilinir. Geri çağırma fonksiyonları, Asenkron olarak icra edilirler.

Bir Callback(geri çağırma) fonksiyonu başka bir fonksiyona verilen bir parametre şeklindeki fonksiyondur. Geri çağırma fonksiyonu, ikinci fonksiyonun içinde çağrılır ya da çalıştırılır.

Daha karmaşık bir ifadeyle: JavaScript'te fonksiyonlar nesnelerdir. Bu nedenle, fonksiyonlar Fonksiyonları Argüman olarak alabilir ve diğer fonksiyonlar tarafından döndürülebilir. Bunu yapan fonksiyonlara üst düzey fonksiyonlar denir. Bir Argüman olarak iletilen tüm fonksiyonlara geri arama(callback) fonksiyonu denir.

Javascript dilinde çoğunlukla senkron fonksiyonları kullanıyoruz. Senkron(Synchronous) fonksiyonlar sırasıyla çalışan fonksiyonlardır. javascript'de komutlar yukarıdan aşağıya doğru çalışırlar. Bu çalışma sistemine Senkron proğramlama yada Eş zamanlı çalışma denir.

Ancak her bir komut satırının çalışma süresi aynı değildir. Bazı komutlar daha uzun süre çalışması sürebilir.

Uzun çalışma süresine ihtiyaç duyan komutlar sıradaki komutları bekleterek kodların çalışma süresini uzatır.

Asekron proğramlamada veya eşzamansız proğramlamada komutlar parçalanarak işlem yapılır. Yazılan komutlar işlem süresine göre çalışır ona göre çıktı verirler.


javascript senkron asekron

Neden geri aramalara ihtiyacımız var?

Çok önemli bir nedenden dolayı - JavaScript olaya dayalı bir dildir. Yani javascript'de bir butona tıklanması gibi bir olay gerçekleşmesinin beklenip sonra komutlar çalışsaydı sitemizde aksaklıklar olurdu. JavaScript'in diğer etkinlikleri dinlerken yürütülmeye devam edeceği(Asekron çalışma) anlamına gelir. Temel bir örneğe bakalım:


function first(){
  console.log(1);
}
function second(){
  console.log(2);
}
first();
second();

//1
//2

Beklediğiniz gibi, önce first fonksiyon yürütülür ve sonra second fonksiyon yürütülür.

Peki ya fonksiyon first hemen çalıştırılamayan bir tür kod içeriyorsa?

First fonksiyonu 500 milisaniye geciktirelim.


function first() {
    setTimeout(function () {
        alert(1);
    }, 500);
}

function second() {
    alert(2);
}

first();
second();

// çıktı
// 2
// 1

Yukarıda kod örneğinde first() fonksiyonu ilk çalışmasına rağmen çıktı olarak daha sonra sonuç vermiştir. Bu javascriptin Asenkron özelliğindendir. Bu gibi durumların önüne geçmek için callback kullanılmalıdır.


function first(callback) {
  setTimeout(
      function () { 
            alert(1);
            callback() 
      }, 500); 
} 

function second() { 
    alert(2); 
} 

first(second); 

// çıktı 
// 1 
// 2


Bir başka örnek:

Örneğin büyük bir dosyayı İnternet'ten indirirken, diğer işlemlerin de aksamamasını isteyelim. Bir başka deyişle, indirme işlemi diğer işlemleri durdurmasın ya da engellemesin. İndirme işleminin arka planda sürmesini, işlem bitince de bir fonksiyonu çağırmak istediğimizde, asenkron çalışma modu uygulanmalıdır. Arka planda bir işlem yürürken, diğer talepleri kabul etmeli ve sistemi bloke etmemelidir. 'Geri çağırma' işlemi tanımlayarak dosya okuma işleminin bittiği sinyalini ve ya diğer işlemlere geçiş işlemi sağlayabiliriz.

onur elmas 04/07/2021

çok güzel bir anlatım olmuş. elinize sağlık.

Barış B 24/10/2021

Sade bir anlatım olmuş Teşekkürler. Bu Konuda yeniyim . bunun kullanımı için örnek olarak bir apiye gelen login isteğinde login fonksiyonu sonunda callback olarak token üreten ve gönderen fonsiyonu çağırmak doğru bir örnek olur mu?

patates 14/10/2022

güzel anlatım, Teşekür ederim.
Lütfen konu haricinde soru sormayın cevaplanmayacaktır. Yorumunuz onaylandıktan sonra yayınlanacaktır. Lütfen Yukarıda ki mesajları okuyun tekrar aynı soruları sormayın.

4535

KATEGORİ
  • HTML
  • CSS
  • PHP
  • JQUERY
  • PHOTOSHOP
  • JavaScript
  • Web Dünyası
  • Linux
  • MİTHRİL FRAMEWORK
  • Laravel
  • Git
  • React
POPÜLER MAKALE
  • HTML LİNK(Bağlantı)EKLEME - LİNK VERME
  • HTML YAZI VE RESİM ORTALAMA
  • HTML RESME LİNK VERME
  • HTML FORM OLUŞTURMA
  • CSS YATAY MENÜ YAPIMI
  • HTML RESİM EKLEME
  • CSS (BOYUT) GENİŞLİK VE YÜKSEKLİK (Width-Height)
  • HTML DİV ve SPAN NEDİR?
  • HTML ARKAPLANA MÜZİK EKLEME
  • KALİTE KAYBETMEDEN RESİMLERİ BÜYÜTME
ETİKET
WEBCEBİR © 2013 Tüm hakları saklıdır.