我有一个(有点奇怪的)可写流,我需要转换为转换流。
可写流通常位于管道链的末端,一旦为其输出收集了足够的数据,就会发出自定义事件。我希望它在中间,所以我可以将它传递给另一个writeStream,即:
company
我做的是以下内容并且有效。
readStream.pipe(writeStreamToConvert).pipe(finalWriteStream);
这样工作正常,似乎没有泄漏内存并且相当快。但是节点给了我一个警告:
const through2 = require('through2')
var writeStreamToConvert = new WriteStreamToConvert();
return through2.obj(function (chunk, enc, callback) {
writeStreamToConvert.write(chunk)
// object is the event emitted from the writestream
writeStreamToConvert.on('object', (name, obj ) => {
this.push(JSON.stringify(obj, null, 4) + '\n')
});
callback()
})
所以如果这是转换写入流的正确方法,我有点好奇吗?
答案 0 :(得分:0)
事件处理程序最好放在Transform流构造函数中。由于through2
不支持此类初始化,因此您需要直接使用节点的流API。
目前,正在为写入.on()
流的每个对象添加一个新的事件处理程序(永远不会删除 - 这就是through2
的工作方式)。这就是警告发生的原因。