Node.js
Özet - Callback'ler
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.
Örnek çözümü göster
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);
});
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.
Örnek çözümü göster
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);
});
});
Kendini test et
-
Kavramları eşle
- cb()
- Callback çağrısı
- makeAdder
- Higher-order function
- forEach
- Callback kullanan metot
- (err, data)
- Error-first imza
- piramit girinti
- Callback hell belirtisi
-
Dosya okuyucu nasıl kurulur?
- Tek fonksiyonla
- Sadece console.log ile
- Zincirleme callback'lerle
- Dizi metotlarıyla
Cevabı göster
Zincirleme callback'lerle — zincirleme callback'lerle her adım bir sonrakını çağırır.
-
Error-first imza
function handler(____, data) { if (err) throw err; console.log(data); }
Cevabı göster
function handler(err, data) { if (err) throw err; console.log(data); }
Sıradaki ders: Görev modeli