Node.js的如何将几个流(数组或链)传递给管道?

时间:2016-03-20 21:44:17

标签: node.js node.js-stream

我有一个返回多个流的函数:

// function 
var s1 = through.obj({highWaterMark: 2}, function(data, enc, next) {
    console.log( "A: "+data );
    next(null, "A");
});

var s2 = through.obj({highWaterMark: 2}, function(data, enc, next) {
    console.log( "B: "+data );
    next(null, "B");
});

return [s1, s2]; 
// or chain:
// s1.pipe(s2);
// return s1;

我想将函数的结果传递给pipe:

gulp.src(...).pipe(...).pipe( getStreams() ).pipe(gulp.dest...);

有办法吗?

或许我可以像下一个那样做一些事情?

var s1 = getStreams();
gulp.src(...).pipe(...).pipe( s1 )
s1.getLastStreamOfChain().pipe(gulp.dest...);

2 个答案:

答案 0 :(得分:0)

您可以使用merge-stream模块:

const mergeStream = require('merge-stream');
gulp.src(...).pipe(...).pipe(mergeStream(s1, s2)).pipe(gulp.dest...);

答案 1 :(得分:0)

我找到了一些方法来做到这一点。 1)

s1.pipe(s2);
s1.lastStreamOfChain = s2;

stream.pipe(s1).lastStreamOfChain.pipe(s3); // Of course it is not good

2) 使用stream-combiner2。

combine.obj(s1, s2);

is there any way to reuse a chain of pipe transformations in NodeJS?