Asenkron ve Senkron Fonksiyonlar Arasındaki Farklar Nelerdir?

Aziz Şentürk
Wellbees Tech
Published in
2 min readApr 17, 2024

JavaScript ile yazılım geliştirirken, asenkron ve senkron fonksiyonlar sıklıkla karşılaşılan kavramlardır. Bu yazıda, bu iki tür fonksiyonun farklarını, avantajlarını, dezavantajlarını ve uygun kullanım durumlarını ele alacağım. Ayrıca, özellikle asenkron işlemlerde kullanılan await anahtar kelimesini de örneklerle açıklayacağım.

Senkron Fonksiyonlar

Senkron fonksiyonlar, işlemlerin sırayla ve beklenen sırada gerçekleştiği fonksiyonlardır. Bir işlem tamamlanmadan bir sonraki işleme geçilmez ve işlemler adım adım ilerler. Senkron fonksiyonlar, işlem tamamlanana kadar kodunun beklemesini isteyen durumlarda kullanılır.

Örnek:

function senkronFonksiyon() {
console.log("İşlem başladı.");
console.log("İşlem devam ediyor.");
console.log("İşlem tamamlandı.");
}

console.log("Fonksiyon başladı.");
senkronFonksiyon();
console.log("Fonksiyon tamamlandı.");

Bu fonksiyon çağrıldığında, her console.log ifadesi sırayla çalışacak ve işlem tamamlandıktan sonra bir sonraki kod satırına geçilecektir.

Çıktı:

Fonksiyon başladı.
İşlem başladı.
İşlem devam ediyor.
İşlem tamamlandı.
Fonksiyon tamamlandı.

Avantajlar:

  • Kolay anlaşılabilir ve düzenlenebilir.
  • Hata yönetimi daha kolaydır.
  • İşlemler sıralı olarak gerçekleşir, beklenen sonuçlar elde edilir.

Dezavantajlar:

  • Bir işlem tamamlanmadan diğerine geçilmediği için performans sorunlarına yol açabilir.
  • Uygulamanın donmasına neden olabilir.

Asenkron Fonksiyonlar

Asenkron fonksiyonlar ise işlemlerin sırayla değil, eş zamanlı olarak gerçekleştiği fonksiyonlardır. Bir işlem tamamlanmadan diğerine geçilebilir ve kodun devam etmesine izin verilir. Asenkron fonksiyonlar genellikle ağ istekleri, dosya okuma/yazma gibi zaman alan işlemler için kullanılır.

Örnek:

function asenkronFonksiyon() {
console.log("İşlem başladı.");

setTimeout(() => {
console.log("İşlem devam ediyor.");
}, 2000);

console.log("İşlem tamamlandı.");
}

console.log("Fonksiyon başladı.");
asenkronFonksiyon();
console.log("Fonksiyon tamamlandı.");

Bu fonksiyon çağrıldığında, setTimeout işlemi asenkron olarak çalışacak ve diğer console.log ifadesi işlemin tamamlanmasını beklemeden çalışacaktır.

Çıktı:

Fonksiyon başladı.
İşlem başladı.
İşlem tamamlandı.
Fonksiyon tamamlandı.
İşlem devam ediyor.

Avantajlar:

  • Performansı artırır, uygulamanın daha hızlı çalışmasını sağlar.
  • Bekleme sürelerini optimize eder.
  • Paralel işlemler için idealdir.

Dezavantajlar:

  • Kod karmaşıklığını artırabilir.
  • Hata yönetimi zor olabilir.

Asenkron Fonksiyonlarda "await" Kullanımı

await, asenkron bir fonksiyon içinde başka bir asenkron işlemi beklemek için kullanılan bir anahtar kelimedir. await, bir işlemin tamamlanmasını bekler ve ardından kodun geri kalanını çalıştırır. await anahtarının çalışması için bir promise dönmesi gerekmektedir.

Çıktı:

async function asenkronBekleyenFonksiyon() {
console.log("İşlem başladı.");

await new Promise(resolve => {
setTimeout(() => {
console.log("İşlem devam ediyor.");
resolve();
}, 2000);
});

console.log("İşlem tamamlandı.");
}

console.log("Fonksiyon başladı.");
asenkronBekleyenFonksiyon();
console.log("Fonksiyon tamamlandı.");

Bu fonksiyon çağrıldığında, ilk setTimeout işlemi asenkron olarak çalışacak, ikinci setTimeout işlemi await ifadesi nedeniyle 2 saniye boyunca bekleyecek ve ardından diğer console.log ifadesi çalışacaktır.

Çıktı:

Fonksiyon başladı.
İşlem başladı.
Fonksiyon tamamlandı.
İşlem devam ediyor.
İşlem tamamlandı.

Sonuç

Asenkron fonksiyonlar işlemleri eşzamanlı olarak gerçekleştirirken, senkron fonksiyonlar işlemleri sıralı olarak yürütür. Asenkron fonksiyonlar performansı artırırken, senkron fonksiyonlar kolay anlaşılabilir ve hata yönetimi daha basittir. “await” anahtar kelimesi, asenkron fonksiyonlarda işlem tamamlanana kadar beklemeyi sağlar.

--

--