JavaScript'te Geri Çağrılarla Asenkron Kod
Diyelim ki bazı asenkron fonksiyonlarımız var:
function make() {
setTimeout(function() {
console.log('1');
}, 3000);
}
Diyelim ki bu fonksiyonu aşağıdaki şekilde kullanıyoruz:
make();
console.log('2'); // ilk olarak çalışacak
Diyelim ki, fonksiyonun içindeki asenkron
işlem çalıştıktan sonra konsoldaki ikinci
çıktının çalışmasını istiyoruz.
Bunun için kullanılan yaklaşımlardan biri
geri çağrı kullanmaktır:
Bekleyen kodu anonim bir fonksiyonun içine alıp
make fonksiyonuna parametre olarak iletiriz:
make(function() {
console.log('2');
});
Tabii ki, bu tek başına sorunumuzu
çözmeyecektir. Şimdilik sadece şu anlaşmayı
yapmış olduk: make tetiklendikten sonra
kodu çalıştırmak istiyorsanız, bu kodu
make çağrısına bir geri çağrı olarak iletin.
make fonksiyonunun kodunu, anlaşmamıza uygun
çalışacak şekilde düzeltelim:
function make(callback) {
setTimeout(function() {
console.log('1'); // herhangi bir asenkron işlem, birden fazla olabilir
callback(); // sonra geri çağrımız
}, 3000);
}
Konsolda sayıların hangi sırayla yazdırılacağını anlatın:
function make(callback) {
setTimeout(function() {
console.log('1');
callback();
}, 3000);
}
make(function() {
console.log('2');
console.log('3');
});