1

我的代码有一些流问题,我不知道如何解决。

代码摘录: http: //gist.github.com/5689522

本质上,我在父转换流中有几个转换流,但是我在传递数据时遇到了问题,因为我在没有被转换的第一个流(S0)上使用推送,因此只是推送数据直接到第二个流(S1),并导致错误。通常我会.pipe()用来连接流,但我无法从转换流内部看到如何做到这一点,因为我想管道输入,而不是输出,并且该_transform函数只提供一个块(缓冲区)作为参数。

任何想法如何做这样的事情?

4

2 回答 2

3

你需要一起收集块

var data='', tstream = new stream.Transform();
tstream._transform = function (chunk, encoding, done) {
    data += chunk.toString();
    done();
};

然后重新分配_flush函数:

tstream._flush = function (done) {
    data += 'hola muheres';
    this.push(data);
    done();
};

所以一起:

req.pipe(anotherstream).pipe(tstream).pipe(response);

=> "somedata" => "somedatahola muheres"

于 2013-07-24T05:53:05.873 回答
0

从文档中push

注意:这个函数应该由 Readable 实现者调用,而不是由 Readable 流的消费者调用。

既然你没有在执行中调用那个ParserStream,你不应该调用_s0Stream.push,你应该做_s0Stream.write。在这种情况下,您可能还想传递您的done回调。

于 2013-06-01T12:37:33.760 回答