Node.js的为什么这个管道抛出:错误:写完后?

时间:2016-03-13 19:31:50

标签: node.js node.js-stream

我写了下一个简单的代码:

gulp.task('test', function () {
    var throughStream = through.obj(function (data, enc, next) {
        this.push(data);
        next();
    });

    function processStr(str, cb, parentStream) {
        var stream = new Stream.Readable();
        stream.push(str);
        stream.push(null);

        stream.pipe(throughStream);
        stream.on('data', function (data) {
        });
        stream.once('end', function () {
            cb();
        });
    }


    var stream = new Stream.Readable();
    stream.push("str 1 ");
    stream.push("str 2 ");
    stream.push("str 3 ");
    stream.push(null);

    stream.pipe(through.obj(function (data, enc, next) {
        processStr(data, next, this);
    }));
});

行:stream.pipe(throughStream);抛出错误“写完后”。

但是如果我将var throughStream移动到processStr函数中,那么所有都是okey。

或者,如果我删除stream.once('end', ...),那么它也可以正常运作。

所以,我不明白为什么会这样?

0 个答案:

没有答案