Readable stream
- Node.js kursu
- Orta seviye
- Ders 8/116
- 5 dk
Readable stream ile veri okumayı öğrenirsin.
Readable stream
Readable stream veriyi kaynaktan programa doğru akıtır. Readable.from(dizi) ile bir dizeden okuma akışı oluşturursun. Veri "data" olayıyla parça parça gelir; akış bittiğinde "end" olayı fırlar.
Örnek: const r = Readable.from(["elma", "armut"]); r.on("data", (chunk) => console.log("Okundu: " + chunk)); r.on("end", () => console.log("Bitti"));. Burada "data" dinleyicisi her parça için bir kez çağrılır; chunk o anki parçadır. "end" dinleyicisi tüm parçalar aktıktan sonra çağrılır. Readable, EventEmitter'dan türediği için on metoduyla dinlenir.
Veriyi yakalama
Bir Readable'da "data" dinleyicisi eklediğinde akış akan (flowing) moda geçer ve parçalar otomatik gelir. chunk genellikle bir Buffer ya da dizedir; chunk.toString() ile dizeye çevirirsin.
Parçaları biriktirmek istersen bir diziye push edebilirsin: const parcalar = []; r.on("data", (c) => parcalar.push(c));. Sonra "end" olayında birleştirip işlersin. Readable.from dizeden gelen öğeleri olduğu gibi verir; bu yüzden chunk.toString() güvenle çalışır. Akış bittiğinde "end" kesin olarak fırlar; kaç parça geldiğine bakmaz.
Uygulama Readable'dan parça oku
Readable.from(["elma", "armut"]) ile r adında bir okuma akışı oluştur. "data" olayını dinle: her chunk için "Okundu: " + chunk yaz. "end" olayını dinle: "Bitti" yaz.
Başlangıç kodu
// Readable içe aktar ve r örneği oluştur
// buraya yaz
// "data" olayını dinle
// buraya yaz
// "end" olayını dinle
// buraya yazÖrnek çözüm
const { Readable } = require("stream");
const r = Readable.from(["elma", "armut"]);
r.on("data", (chunk) => console.log("Okundu: " + chunk));
r.on("end", () => console.log("Bitti"));Beklenen çıktı
Okundu: elma Okundu: armut Bitti
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Olayı anlamına eşle
| Kavram | Anlamı |
|---|---|
"data" |
Her parça gelince fırlar |
"end" |
Akış bittiğinde fırlar |
chunk |
O anki parça |
Readable.from |
Okuma akışı oluşturur |
2 data dinleyicisini tamamla
r.on("____", (chunk) => console.log("Okundu: " + chunk));
r.on("data", (chunk) => console.log("Okundu: " + chunk));
Açıklama: data olayı her parça için fırlar.
3 Readable.from(["a", "b"]) kaç kez data fırlatır?
r.on("data", fn)- Hiç fırlatmaz
- Yalnızca bir kez
- Sonsuza kadar
- İki kez, her dize öğesi için bir Doğru cevap
Açıklama: Dizide iki öğe varsa iki parça gelir.