节点.js文档说,readable.pipe(destination[, options])
'返回对目标流的引用,从而可以设置 管道溪流的链条上'。
流的文档。Writable没有提到该方法pipe
,因此该方法似乎不可用。
但是,如果该方法在返回的Writeable
上不可用,如何在返回的上调用pipe
该方法?
例:
|-> returns a Writable
|
r.pipe(z).pipe(w);
|
|-> How is the chained pipe available here?
是我错过了重点还是文档缺少了重点?
如果您继续向下滚动同一页面,您将找到双工和转换流的文档。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);
在此示例中,zlib.createGzip()
返回Transform
流。您可以通过子类化stream.Transform
来创建自己的自定义转换