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ı.
Örnek çözümü göster
function readConfig(callback) {
setTimeout(() => {
callback(null, { theme: 'dark' });
}, 100);
}
Kendini test et
-
Hangisi error-first callback imzasıdır?
- callback(err, data)
- callback(result)
- callback(error)
- callback(data, err)
Cevabı göster
callback(err, data) — Doğru! İlk parametre hata (err), ikincisi sonuç (data).
-
Hata kontrolünü tamamla
readUser(1, (err, user) => { if (____) { console.log('Hata:', err.message); return; } });Cevabı göster
readUser(1, (err, user) => { if (err) { console.log('Hata:', err.message); return; } }); -
Kavramları eşleştir
- err parametresi
- İlk argüman
- null err
- Hata yok
- new Error()
- Hata nesnesi
- callback(err, data)
- Hata önce
-
Error-first callback'te err === null ne anlama gelir?
- Bir hata oluştu
- Callback henüz çağrılmadı
- İşlem başarılı, hata yok
- Sonuç yok
Cevabı göster
İşlem başarılı, hata yok — Doğru! null err, hatanın olmadığını ve sonucun kullanılabileceğini gösterir.