Özet - Callback'ler
- Node.js kursu
- Başlangıç
- Ders 82/116
- 5 dk
higher-order, error-first ve callback hell'i birleştirerek bir dosya okuyucu yazarsın.
Özet - Callback'ler
Bu grupta callback'lerin beş yönünü gördün: temel callback kavramı, higher-order function'lar, forEach ile callback kullanımı, Node.js'in error-first sözleşmesi ve callback hell tuzağı.
Bunları birleştirerek gerçek bir akış kurabilirsin. Örneğin bir dosya okuyucu: kullanıcı yükler, hata kontrol edilir, sonra post'lar yüklenir. Her adım callback alır ve error-first sözleşmesine uyar.
Son örnekte zincirleme bir yükleyici yazacaksın. İlk callback'ten gelen veriyi ikinci çağrıya aktaracak, her adımda error-first kontrolü yapacaksın. Bu desen, Node.js'in klasik callback tabanlı akışlarını özetler.
Uygulama Dosya okuyucu simülasyonu
loadUser(id, cb) fonksiyonunu tanımla: id 0 ise cb(new Error('yok'), null), değilse cb(null, { name: 'Ayşe' }) çağrısı yapsın. loadUser(1, (err, user) => { if (err) { console.error(err.message); return; } console.log(user.name); }) biçiminde çağır; hatasız durumda adı yazılsın.
Başlangıç kodu
// loadUser fonksiyonunu tanımla ve error-first callback ile çağırÖrnek çözüm
function loadUser(id, cb) {
if (id === 0) { cb(new Error('yok'), null); return; }
cb(null, { name: 'Ayşe' });
}
loadUser(1, (err, user) => {
if (err) { console.error(err.message); return; }
console.log(user.name);
});Beklenen çıktı
Ayşe
Uygulama Zincirleme yükleyici
loadUser(id, cb) fonksiyonunu tanımla: cb(null, { name: 'Ayşe' }) çağrısı yapsın. loadPosts(user, cb) fonksiyonunu tanımla: cb(null, ['a', 'b', 'c']) çağrısı yapsın. loadUser(1, (err, user) => { loadPosts(user, (err2, posts) => { console.log(user.name + ': ' + posts.length); }); }) biçiminde iç içe çağır.
Başlangıç kodu
// loadUser ve loadPosts fonksiyonlarını tanımla, iç içe çağırÖrnek çözüm
function loadUser(id, cb) {
cb(null, { name: 'Ayşe' });
}
function loadPosts(user, cb) {
cb(null, ['a', 'b', 'c']);
}
loadUser(1, (err, user) => {
loadPosts(user, (err2, posts) => {
console.log(user.name + ': ' + posts.length);
});
});Beklenen çıktı
Ayşe: 3
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Kavramları eşle
| Kavram | Anlamı |
|---|---|
cb() |
Callback çağrısı |
makeAdder |
Higher-order function |
forEach |
Callback kullanan metot |
(err, data) |
Error-first imza |
piramit girinti |
Callback hell belirtisi |
2 Dosya okuyucu nasıl kurulur?
- Tek fonksiyonla
- Sadece console.log ile
- Zincirleme callback'lerle Doğru cevap
- Dizi metotlarıyla
Açıklama: zincirleme callback'lerle her adım bir sonrakını çağırır.
3 Error-first imza
function handler(____, data) { if (err) throw err; console.log(data); }
function handler(err, data) { if (err) throw err; console.log(data); }
Açıklama: ilk parametre err'dir; Node.js sözleşmesi budur.