【发布时间】:2014-07-05 01:22:26
【问题描述】:
我有一个实现为一系列转换流的 csv 解析器:
process.stdin
.pipe(iconv.decodeStream('win1252'))
.pipe(csv.parse())
.pipe(buildObject())
.pipe(process.stdout);
我想抽象解析器(在它自己的模块中)并且能够做到:
process.stdin.
.pipe(parser)
.pipe(process.stdout);
其中parser 只是之前使用的转换流的组合。
如果我这样做了
var parser = iconv.decodeStream('win1252')
.pipe(csv.parse())
.pipe(buildObject());
然后将parser 设置为 buildObject() 流,并且只有此转换流接收数据。
如果我这样做了
var parser = iconv.decodeStream('win1252');
parser
.pipe(csv.parse())
.pipe(buildObject());
它也不起作用,因为.pipe(process.stdout) 将在第一个转换流上被调用,而另外两个将被绕过。
对优雅的流组合有什么建议吗?
【问题讨论】: