你如何将一个可读stream传递给另一个可读stream?

我正在从“stream冒险”做练习, stream-combiner模块我很不确定。

具体来说就是说:

stream-combiner模块根据stream-combiner列表创buildstream水线,返回单个stream,其将第一stream暴露为可写侧,将最后stream暴露为可读侧(如duplexer模块),但具有任意数量的stream之间的stream。 与duplexer模块不同,每个stream都被传送到下一个。 例如:

 var combine = require('stream-combiner'); var stream = combine(a, b, c, d); 

将在内部执行a.pipe(b).pipe(c).pipe(d)但由combine()返回的stream combine()其可写侧挂钩到a并将其可读侧挂钩到d

现在,正如它所说的,“它的可写入端被钩入a可读的端,并被钩入了d ”,可以使用如下的stream

 someReadableStream.pipe(stream).pipe(someWritableStream) 

但是上面不会变成:

 someReadableStream.pipe(a).pipe(b).pipe(c).pipe(d).pipe(someWritableStream) 

我的问题是如何可读的streampipe道到另一个可读的stream。 最后,如何将可写入stream的pipe道再次输送到可写入的stream中。

下面是一个文本示例,希望澄清有关stream的规则,以便stream合并器执行一些有用的操作:

 var rw = combine(r_or_rw, rw1, rw2, rw3, ...rwN, w_or_rw) 

所以第一个stream需要至less是可读的,内部stream都需要读/写,最后stream至less需要可写。 返回的新stream是可读写的。 当你写入返回的stream时,通过pipe道向下发送新的数据,当你读到这个数据时,你会从stream水线的末端给出数据。

readable.pipe(a).pipe(b).pipe(c).pipe(d).pipe(writable) ,组合器的优点是你不能返回a.pipe(b).pipe(c).pipe(d)从一个函数,所以你必须总是手动连接它们。 与组合器,你可以创build一个stream从其他stream,然后整理到一个function或模块。

为此,a,b,c,d都必须是可读写的转换stream。