Writable stream
- Node.js kursu
- Orta seviye
- Ders 9/116
- 5 dk
Writable stream ile veri yazmayı öğrenirsin.
Writable stream
Writable stream veriyi programdan hedefe doğru akıtır. new Writable({ write(chunk, encoding, callback) { ... } }) ile oluşturulur. write metodu her parça için çağrılır; işlem bitince callback() çağrılır.
Veri yazmak için w.write("metin") kullanırsın. Tüm yazma bittiğinde w.end() çağrılır; bu, "finish" olayını tetikler. Örnek: const w = new Writable({ write(chunk, enc, cb) { console.log("Yazıldı: " + chunk.toString()); cb(); } });. w.write("a"); w.write("b"); w.end(); çağrıları sırayla Yazıldı: a, Yazıldı: b yazdırır; w.on("finish", ...) ile tamamlandı anını yakalarsın.
Yazma akışını bitirme
Bir Writable'a veri yazarken write çağrıları sıraya alınır. end() çağrısı "yazma bitti" anlamına gelir; bundan sonra write çağrılmaz. end()'den sonra "finish" olayı fırlar.
Önemli: write metodu içinde callback'i mutlaka çağırmalısın; aksi halde akış takılır. callback() Node.js'e "bu parça işlendi, sıradakine geç" der. Eğer yazma sırasında hata olursa callback(err) ile hata iletirsin. Bu denetim, Writable'ın arka planda parçaları sırayla güvenle işlemesini sağlar.
Uygulama Writable ile parça yaz
new Writable({ write(chunk, enc, cb) { ... } }) ile w oluştur. write içinde "Yazıldı: " + chunk.toString() yazdır ve cb() çağır. w.write("satır 1") ve w.write("satır 2") çağır, sonra w.end() yap. "finish" olayında "Tamam" yaz.
Başlangıç kodu
// Writable içe aktar ve w örneği oluştur
// buraya yaz
// "satır 1" ve "satır 2" yaz, sonra end() çağır
// buraya yaz
// "finish" olayını dinle
// buraya yazÖrnek çözüm
const { Writable } = require("stream");
const w = new Writable({
write(chunk, enc, cb) { console.log("Yazıldı: " + chunk.toString()); cb(); }
});
w.write("satır 1");
w.write("satır 2");
w.end();
w.on("finish", () => console.log("Tamam"));Beklenen çıktı
Yazıldı: satır 1 Yazıldı: satır 2 Tamam
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 write metodunu tamamla
new Writable({ write(chunk, enc, cb) { console.log("Yazıldı: " + chunk.toString()); ____(); } });
new Writable({ write(chunk, enc, cb) { console.log("Yazıldı: " + chunk.toString()); cb(); } });
Açıklama: cb() çağrılarak yazma biter.
2 Kavramı rolüne eşle
| Kavram | Anlamı |
|---|---|
write(chunk) |
Bir parça yazar |
end() |
Yazmayı bitirir |
"finish" |
Yazma tamamlandı |
callback() |
Parça işlendi sinyali |
3 w.end() çağrısı ne yapar?
w.write("a"); w.end();- Yazmayı bitirir ve finish olayını tetikler Doğru cevap
- Yeni bir parça yazar
- Writable'ı siler
- Yazmayı duraklatır ama bitirmez
Açıklama: end() yazmayı bitirir ve finish tetikler.