Node.js文档称,readable.pipe(destination[, options]) “返回对目标流的引用,从而可以设置管道流链”。
Stream.Writable 的文档没有提到该方法pipe,因此该方法似乎不可用。
pipe但是,如果该方法在返回值上不可用,那么如何才能在返回值Writeable上调用该方法呢?
例子:
|-> returns a Writable
|
r.pipe(z).pipe(w);
|
|-> How is the chained pipe available here?
Run Code Online (Sandbox Code Playgroud)
是我没抓住重点还是文档没抓住重点?
如果继续向下滚动同一页面,您将找到Duplex 和 Transform Streams的文档。和stream.Duplex都stream.Transform实现stream.Readable和stream.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);
Run Code Online (Sandbox Code Playgroud)
在此示例中,zlib.createGzip()返回一个Transform流。您可以通过子类化来创建自己的自定义转换stream.Transform