CodeBlanks Logo Icon CodeBlanks

pipe

.pipe ile stream'leri bağlamayı öğrenirsin.

pipe

pipe metodu bir Readable'ı bir Writable'a bağlar; veri otomatik akar. İmza: readable.pipe(writable). Böylece "data" ve write çağrılarını elle yazmazsın; pipe hepsini yönetir.

Örnek: kaynak.pipe(hedef). Kaynaktan gelen her parça otomatik olarak hedefe yazılır; akış bittiğinde hedefin end()'i çağrılır ve "finish" olayı fırlar. pipe aynı zamanda geri basınç (backpressure) denetler: hedef yavaşsa kaynak bekler. Bu, veriyi kaynaktan hedefe güvenle taşımanın en kısa yoludur.

pipe ile zincirleme

pipe hedef Writable'ı döndürür; bu yüzden zincirleme yapabilirsin. Özellikle Transform stream'lerle güçlüdür: kaynak.pipe(donusturucu).pipe(hedef). Veri önce dönüştürülür, sonra hedefe yazılır.

Basit bir zincir: const kaynak = Readable.from(["a", "b"]); const hedef = new Writable({ write(c, e, cb) { console.log("Pipe: " + c.toString()); cb(); } }); kaynak.pipe(hedef);. hedef.on("finish", () => console.log("Pipe bitti")) ile akışın tamamlandığını yakalarsın. pipe hedefi döndürdüğü için kaynak.pipe(hedef).on("finish", ...) de yazılabilir; bu, zincirleri kısa tutar.

Uygulama İki akışı pipe ile bağla

kaynak adında Readable.from(["a", "b", "c"]) oluştur. hedef adında bir Writable oluştur: write içinde "Pipe: " + chunk.toString() yazdır ve cb() çağır. kaynak.pipe(hedef) ile bağla. hedef.on("finish", ...) ile "Pipe bitti" yaz.

Başlangıç kodu

index.js
// Readable ve Writable içe aktar
// buraya yaz

// kaynak ve hedef oluştur
// buraya yaz

// kaynak'ı hedef'e bağla ve finish'i dinle
// buraya yaz

Örnek çözüm

index.js
const { Readable, Writable } = require("stream");
const kaynak = Readable.from(["a", "b", "c"]);
const hedef = new Writable({
  write(chunk, enc, cb) { console.log("Pipe: " + chunk.toString()); cb(); }
});
kaynak.pipe(hedef);
hedef.on("finish", () => console.log("Pipe bitti"));

Beklenen çıktı

Pipe: a
Pipe: b
Pipe: c
Pipe bitti

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 kaynak.pipe(hedef) ne yapar?

index.js
kaynak.pipe(hedef)
  • Hedefi siler
  • Kaynaktan gelen parçaları otomatik hedefe yazar Doğru cevap
  • Yalnızca hedefin adını döndürür
  • Kaynağı yeniden başlatır

Açıklama: pipe parçaları otomatik hedefe yazar.

2 Parçayı rolüne eşle

Kavram Anlamı
pipe Akışları bağlar
Readable Kaynak akışı
Writable Hedef akışı
"finish" Hedef tamamlandı

3 pipe çağrısını tamamla

Soru
kaynak.____(hedef);
Cevap
kaynak.pipe(hedef);

Açıklama: pipe kaynak ile hedefi bağlar.

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