[英]How can you pipe a readable stream to another readable stream?
我正在从“流冒险”中进行练习,并且stream-combiner
模块不确定。
具体说:
stream-combiner
模块从流列表创建流水线,返回一个流,该流像duplexer
模块一样将第一个流作为可写侧公开,将最后一个流作为可读侧公开,但在两者之间具有任意数量的流。 与duplexer
模块不同,每个流都通过管道传递到下一个。 例如:var combine = require('stream-combiner'); var stream = combine(a, b, c, d);
会在内部执行
a.pipe(b).pipe(c).pipe(d)
但a.pipe(b).pipe(c).pipe(d)
返回的stream
combine()
其可写侧连接到a
并将其可读侧连接到d
。
现在,它说:“将其可写侧连接到a
,将其可读侧连接到d
”,则可以使用上述stream
,如下所示:
someReadableStream.pipe(stream).pipe(someWritableStream)
但是以上内容不会仅仅是:
someReadableStream.pipe(a).pipe(b).pipe(c).pipe(d).pipe(someWritableStream)
我的问题是,如何将可读流传递到另一个可读流。 最后,如何将管道输送到可写流的结果再次输送到可写流。
这是一个文本示例,希望阐明有关流的规则,以使流组合器执行一些有用的操作:
var rw = combine(r_or_rw, rw1, rw2, rw3, ...rwN, w_or_rw)
因此,第一个流必须至少是可读的,内部流都必须是可读写的,而最后一个流至少必须是可写的。 返回的新流是读/写的。 当您写入返回的流时,它将通过管道向下发送新数据,而当您读取该数据时,它将从管道的末尾获得数据。
你是正确的,它与readable.pipe(a).pipe(b).pipe(c).pipe(d).pipe(writable)
, readable.pipe(a).pipe(b).pipe(c).pipe(d).pipe(writable)
器的优点是您无法返回a.pipe(b).pipe(c).pipe(d)
,因此您必须始终手动连接它们。 使用合并器,您可以从其他流中创建一个流,然后将其整理到函数或模块中。
为了使此工作正常进行,a,b,c,d全部必须是可读写的转换流。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.