pipe
- Node.js kursu
- Orta seviye
- Ders 10/116
- 5 dk
.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
// 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
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?
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
kaynak.____(hedef);
kaynak.pipe(hedef);
Açıklama: pipe kaynak ile hedefi bağlar.