首页 文章

Node.JS转换流 - 数据丢失

提问于
浏览
0

我的代码遇到了一些流问题,我不知道如何修复 .

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

本质上,我在传递数据时遇到了问题,因为我在第一个流(S0)上使用了push而没有被转换,因此只是将数据直接输入到第二个流(S1),并导致错误 . 通常我会使用 .pipe() 来连接流,但我不知道如何从变换流内部做到这一点,因为我想管道输入而不是输出,而 _transform 函数只给出一个块(缓冲区)作为论点 .

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

2 回答

  • 2

    你需要一起收集块

    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“

  • 0

    push 的文档:

    注意:此函数应由可读实现者调用,而不是由可读流的使用者调用 .

    既然你没有在 ParserStream 的实现中调用它,你不应该调用 _s0Stream.push ,你应该做 _s0Stream.write . 在这种情况下,你可能也想传递 done 回调 .

相关问题