如何在自定义的through2stream中内部链接stream
我正在编写自己的节点stream,在文本stream中输出每行文本的对象。 这是最终的结果应该是什么样的:
fs.createReadStream('foobar') .pipe(myCustomPlugin());
实现将使用through2
和event-stream
来through2
事情:
var es = require('event-stream'); var through = require('through2'); module.exports = function myCustomPlugin() { var parse = through.obj(function(chunk, enc, callback) { this.push({description: chunk}); callback(); }); return es.split().pipe(parse); };
但是,如果我把这个分开,我所做的就是:
fs.createReadStream('foobar') .pipe( es.split() .pipe(parse) );
这是不正确的。 有没有更好的办法? 我可以inheritancees.split()
而不是在实现中使用它吗? 有没有事件stream或类似的线路上实施拆分的简单方法? 一个不同的模式会更好吗?
注意:我故意在函数内部进行链接,因为myCustomPlugin()
是我试图公开的API接口。
我正在做类似的事情。 看到这个解决scheme: 从两个pipe道stream创build一个Node.jsstream
var outstream = through2().on('pipe', function(source) { source.unpipe(this); this.transformStream = source.pipe(stream1).pipe(stream2); }); outstream.pipe = function(destination, options) { return this.transformStream.pipe(destination, options); }; return outstream;
根据以前接受的答案中的链接,将我放在正确的Googlesearchpath中,如果您不介意另一个模块,则可以使用较短的版本: stream-combiner ( 阅读代码以说服发生了什么事情!
var combiner = require('stream-combiner') , through = require('through2') , split = require('split2') function MyCustomPlugin() { var parse = through(...) return combine( split(), parse ) }