当前,我正在尝试将一个额外的参数传递给on事件,一旦从CSV文件中提取数据,该事件将被触发。我尝试将其作为回调函数的额外参数添加,但它始终是未定义的。
fs.createReadStream(values[i], {start: 118})
.pipe(fastCSV())
.on('data', function(data, myExtraParamter){
logger.info(data);
logger.info(myExtraParamter); --> this one shows an undefined
})
.on('end', function(data){
logger.info("Reading all CSV file completed.");
});
对于将数据传递到on事件的回调中的任何指示,我将不胜感激。
答案 0 :(得分:0)
正如您所说,您的要求是在node.js流的data
事件上接收一个附加参数。
我们需要在这里澄清的是-我期望所描述的解决方案会带来很大的性能影响,但是我们所有人都处于外部库迫使我们退出明智的解决方案的境地。
为了实现您的目标,您需要重写node.js流处理data
事件的方式-本质上,这将导致使用覆盖的{{1 }}方法。
EventEmitter.emit
该类将使您可以将任意数量的参数推送到使用方流。用法需要稍作修改,您已设置好:
const {PassThrough} = require("streams");
class DataExtender extends PassThrough {
constructor(...extra) {
this._extra = extra;
}
emit(ev, ...args) {
if (ev === 'data') return super.emit(ev, ...this._extra, ...args);
super.emit(ev, ...args);
}
}