CodeBlanks Logo Icon CodeBlanks

Hata-önce callback'ler

Node.js tarzı hata-önce callback geleneğini öğrenirsin.

Error-first callback geleneği

Node.js'te asenkron işlemlerde hata yönetimi için yaygın bir gelenek vardır: callback ilk parametre olarak hata alır. Hata yoksa bu parametre null olur; hata varsa bir Error nesnesi olur. Diğer parametreler sonucu taşır.

function readUser(id, callback) {
  setTimeout(() => {
    callback(null, { id: id });
  }, 100);
}

Bu gelenek error-first callback olarak bilinir. Callback'i çağırırken önce hatayı kontrol edersin; bu sayede hatayı unutma riski azalır.

Önce hatayı kontrol et

Bir error-first callback kullanırken önce ilk parametreyi kontrol edersin. Hata varsa sonucu kullanmazsın; hata yoksa err null olur ve sonucu güvenle kullanabilirsin.

readUser(1, (err, user) => {
  if (err) {
    console.log('Hata:', err.message);
    return;
  }
  console.log('Kullanıcı:', user.id);
});

return ile erken çıkmak, hatayı yakaladıktan sonra yanlışlıkla sonuca erişmeyi engeller. Bu desen Node.js'te çok yaygındır.

Uygulama readConfig fonksiyonunu yaz

readConfig adında bir fonksiyon tanımla. Tek parametre alsın: callback. Fonksiyon içinde setTimeout kullanarak 100 ms sonra callback'i null ve bir config nesnesiyle çağır. Hata olmadığı için ilk argüman null olmalı.

Başlangıç kodu

script.js
// readConfig fonksiyonunu yaz: callback parametresi alsın
// setTimeout ile callback'i null ve bir config nesnesiyle çağır

Örnek çözüm

script.js
function readConfig(callback) {
  setTimeout(() => {
    callback(null, { theme: 'dark' });
  }, 100);
}

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 Hangisi error-first callback imzasıdır?

  • callback(data, err)
  • callback(result)
  • callback(error)
  • callback(err, data) Doğru cevap

Açıklama: İlk parametre hata (err), ikincisi sonuç (data).

2 Hata kontrolünü tamamla

Soru
readUser(1, (err, user) => {
  if (____) {
    console.log('Hata:', err.message);
    return;
  }
});
Cevap
readUser(1, (err, user) => {
  if (err) {
    console.log('Hata:', err.message);
    return;
  }
});

Açıklama: if (err) ile hata varsa blok çalışır.

3 Kavramları eşleştir

Kavram Anlamı
err parametresi İlk argüman
null err Hata yok
new Error() Hata nesnesi
callback(err, data) Hata önce

4 Error-first callback'te err === null ne anlama gelir?

  • İşlem başarılı, hata yok Doğru cevap
  • Callback henüz çağrılmadı
  • Bir hata oluştu
  • Sonuç yok

Açıklama: null err, hatanın olmadığını ve sonucun kullanılabileceğini gösterir.

Orta seviye bölümündeki tüm dersler