如果readable.pipe()返回一个Writable,我们如何链接管道?

时间:2018-06-06 18:21:38

标签: node.js

Node.js documentation说,readable.pipe(destination[, options])'返回对目标流的引用,可以设置 加上管道流的连锁店。

documentation for stream.Writable并未提及方法pipe,因此该方法似乎无法使用。

但如果该方法不可用,如何在返回的pipe上调用Writeable - 方法怎么办?

示例:

    |-> returns a Writable
    |
r.pipe(z).pipe(w);
            |
            |-> How is the chained pipe available here?

我是否忽略了这一点,或者文档遗漏了它?

1 个答案:

答案 0 :(得分:1)

如果您继续向下滚动同一页面,则会找到Duplex and Transform Streams的文档。 stream.Duplexstream.Transform都实现了stream.Readablestream.Writable接口。您可以使用它们来链接.pipe次来电。事实上,它们是出于这个目的存在的

一个常见的例子是阅读,解压缩和编写文件......

const gzip = zlib.createGzip();
const fs = require('fs');
const inp = fs.createReadStream('input.txt');
const out = fs.createWriteStream('input.txt.gz');

inp.pipe(gzip).pipe(out);

在此示例中,zlib.createGzip()返回Transform个流。您可以通过继承stream.Tranform

来创建自己的自定义转换