Node.js
Writable stream
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.
Örnek çözümü göster
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"));
Kendini test et
-
write metodunu tamamla
new Writable({ write(chunk, enc, cb) { console.log("Yazıldı: " + chunk.toString()); ____(); } });
Cevabı göster
new Writable({ write(chunk, enc, cb) { console.log("Yazıldı: " + chunk.toString()); cb(); } });
-
Kavramı rolüne eşle
- write(chunk)
- Bir parça yazar
- end()
- Yazmayı bitirir
- "finish"
- Yazma tamamlandı
- callback()
- Parça işlendi sinyali
-
w.end() çağrısı ne yapar?
w.write("a"); w.end();
- Yazmayı bitirir ve finish olayını tetikler
- Yeni bir parça yazar
- Writable'ı siler
- Yazmayı duraklatır ama bitirmez
Cevabı göster
Yazmayı bitirir ve finish olayını tetikler — end() yazmayı bitirir ve finish tetikler.
Sıradaki ders: pipe