一尘不染

连接两个(或n个)流

node.js

  • 2个流:

给定可读流, stream1并且 获取包含 连接
stream2的惯用(简洁)方法是什么? stream1``stream2

我不能做stream1.pipe(outStream); stream2.pipe(outStream),因为这样流内容混杂在一起。

  • n个 流:

给定一个EventEmitter发出不确定数量的流,例如

    eventEmitter.emit('stream', stream1)
eventEmitter.emit('stream', stream2)
eventEmitter.emit('stream', stream3)
...
eventEmitter.emit('end')

一种将 所有流串联在一起的流 的惯用(简洁)方法是什么?


阅读 204

收藏
2020-07-07

共1个答案

一尘不染

合并的流包会连接流。自述文件中的示例:

var CombinedStream = require('combined-stream');
var fs = require('fs');

var combinedStream = CombinedStream.create();
combinedStream.append(fs.createReadStream('file1.txt'));
combinedStream.append(fs.createReadStream('file2.txt'));

combinedStream.pipe(fs.createWriteStream('combined.txt'));

我相信您必须立即添加所有流。如果队列为空,则combinedStream自动结束。参见问题5

流流库是一个具有明确的替代.end,但它更受欢迎,想必没有得到很好的测试。它使用Node 0.10的streams2
API(请参阅此讨论)。

2020-07-07