Hata-önce callback'ler
- JavaScript kursu
- Orta seviye
- Ders 68/134
- 5 dk
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
// readConfig fonksiyonunu yaz: callback parametresi alsın
// setTimeout ile callback'i null ve bir config nesnesiyle çağırÖrnek çözüm
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
readUser(1, (err, user) => {
if (____) {
console.log('Hata:', err.message);
return;
}
});
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.