Node.js 上载数据时暂停节点csv解析器

Node.js 上载数据时暂停节点csv解析器,node.js,csv,parsing,Node.js,Csv,Parsing,我正在使用Node,我的读取流来自中的std。我正在将其传送到解析器。在解析器可读函数中,我正在进行异步HTTP调用以上载此数据。在此期间,我希望解析器暂停读取。直到异步调用完成执行 var parse=require('csv-parse'); var输出=[]; //创建解析器 var parser=parse({delimiter:',',columns:true,trim:true}); on('readable',function(){ while(record=parser.rea

我正在使用Node,我的读取流来自中的std。我正在将其传送到解析器。在解析器可读函数中,我正在进行异步HTTP调用以上载此数据。在此期间,我希望解析器暂停读取。直到异步调用完成执行

var parse=require('csv-parse');
var输出=[];
//创建解析器
var parser=parse({delimiter:',',columns:true,trim:true});
on('readable',function(){
while(record=parser.read()){
console.log(“仍在读取”);
var jsonRec=转换点(记录);
var jsonData=JSON.stringify(jsonRec);
push(新缓冲区(jsonData+“\n”);
//parser.pause();
var assertPromise=uploadBatches1(indexName,function(){
//resume();
log('Returned');
});
}
});
函数uploadBatches1(IndexToAsert,cb){
//上载从语法分析器获取的数据

}
由于csv parse公开了一个可读的流,您可以使用
parser.pause()暂停该流。

同样,更新完成后,可以调用
parser.resume()
。您还可以使用
parser.isPaused()
检查是否需要提前恢复

您可以阅读有关可读流的更多信息以及此处pause方法的功能:

基于以上内容,您应该实现
parser.on('data')
readable stream事件,而不是
while(record=parser.read())
循环。如果您自己正在主动调用read方法,则暂停流不会产生任何效果

考虑这样重新构造代码,然后从文件系统读取parser.pipe:

var parse=require('csv-parse');
var输出=[];
//创建解析器
var parser=parse({delimiter:',',columns:true,trim:true});
parser.on('data',function(){
console.log(“仍在读取”);
var jsonRec=转换点(记录);
var jsonData=JSON.stringify(jsonRec);
push(新缓冲区(jsonData+“\n”);
parser.pause();
var assertPromise=uploadBatches1(indexName,function(){
resume();
log('Returned');
});
});
函数uploadBatches1(IndexToAsert,cb){
//上载从语法分析器获取的数据

}
您是否有机会看到我下面的答案是否对您有所帮助?您需要更多信息或帮助吗?