我有一个csv解析器实现为一系列转换流:
process.stdin
.pipe(iconv.decodeStream('win1252'))
.pipe(csv.parse())
.pipe(buildObject())
.pipe(process.stdout);
Run Code Online (Sandbox Code Playgroud)
我想抽象解析器(在它自己的模块中)并且能够:
process.stdin.
.pipe(parser)
.pipe(process.stdout);
Run Code Online (Sandbox Code Playgroud)
其中parser只是先前使用的变换流的组成.
如果我做
var parser = iconv.decodeStream('win1252')
.pipe(csv.parse())
.pipe(buildObject());
Run Code Online (Sandbox Code Playgroud)
然后parser设置为buildObject()流,只有此转换流接收数据.
如果我做
var parser = iconv.decodeStream('win1252');
parser
.pipe(csv.parse())
.pipe(buildObject());
Run Code Online (Sandbox Code Playgroud)
它也不起作用,因为.pipe(process.stdout)将在第一个变换流上调用,另外两个将被绕过.
对优雅的溪流组合的任何建议?