首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在自定义through2流内部链接流

如何在自定义through2流内部链接流
EN

Stack Overflow用户
提问于 2014-11-11 03:14:34
回答 2查看 1.8K关注 0票数 2

我正在Node中编写自己的直通流,它接收文本流并输出每一行文本的对象。最终结果应该是这样的:

代码语言:javascript
复制
fs.createReadStream('foobar')
  .pipe(myCustomPlugin());

该实现将使用through2event-stream来简化操作:

代码语言:javascript
复制
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);
};

但是,如果我要把它拆开的话,我所做的就是:

代码语言:javascript
复制
fs.createReadStream('foobar')
  .pipe(
    es.split()
      .pipe(parse)
  );

这是不正确的。有更好的办法吗?我可以继承es.split()而不是在实现中使用它吗?是否有一种简单的方法可以在没有事件流或类似事件的情况下在线实现拆分?另一种模式会更好吗?

注意:我有意在函数中进行链接,因为myCustomPlugin()是我试图公开的API接口。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-17 17:11:23

我也在做类似的事情。请参阅此解决方案:从两个管道流创建Node.js流

代码语言:javascript
复制
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;
票数 0
EN

Stack Overflow用户

发布于 2015-07-16 11:42:47

基于之前接受的答案中的链接,它使我进入了正确的googling轨道,如果您不介意的话,这里有一个更短的版本:流组合器 (读代码,用来让自己相信正在发生的事情!)

代码语言:javascript
复制
var combiner = require('stream-combiner')
  , through = require('through2')
  , split = require('split2')

function MyCustomPlugin() {
  var parse = through(...)

  return combine( split(), parse )
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26856874

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档