CodeBlanks Logo Icon CodeBlanks

Readable stream

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

index.js
// 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

index.js
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

Soru
r.on("____", (chunk) => console.log("Okundu: " + chunk));
Cevap
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?

index.js
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.

Orta seviye bölümündeki tüm dersler