我写了下一个简单的代码:
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', ...)
,那么它也可以正常运作。
所以,我不明白为什么会这样?