繁体   English   中英

您如何通过管道将可读流传输到另一个可读流?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM