nodejs将管道流式传输到已经管道的N个流中

时间:2015-08-03 08:55:05

标签: javascript node.js stream

我想将一个流管道传输到N个已经管道的流,下面的代码只返回here2它不会进入第一个转换流。似乎管道流不像一个流。

'use strict';

var stream = require('stream');
var through2 = require('through2');

var pass = new stream.PassThrough({objectMode: true});

var transform1 = through2.obj(function(obj, enc, done) {
    console.log('here1');
    this.push(obj);
    done();
}).pipe(through2.obj(function(obj, enc, done) {
    console.log('here2');
    this.push(obj);
    done();
}));

pass.write({'hello': 'world'});

pass.pipe(transform1).on('data', function(data) {
    console.log(data);
});

1 个答案:

答案 0 :(得分:0)

pipe方法返回目标流。所以transform1流实际上是管道链中的第二个流。最后你只将pass流写入第二个流(因此输出总是'这里2'):试试这个:

pass.pipe(through2.obj(function(obj, enc, done) {
    console.log('here1');
    this.push(obj);
    done();
})).pipe(through2.obj(function(obj, enc, done) {
    console.log('here2');
    this.push(obj);
    done();
}));

pass.write({'hello': 'world'});