我正在使用nodejs中的requests模块发出请求,我正在流式处理我得到的响应。此响应流通过管道传输到csv解析器,并将记录填充到数组中。一旦我得到一个预设的记录计数,我想结束csv解析并关闭响应流。如何正确清理响应流。这是伪代码

var stream = request.get(url);
stream.pipe(csvParser);
var count = 15;
csvParser.on("readable",function(){
    while(record = csvParser.read()){
        if(records.length<count){
            records.push(record);
        } else {
            csvParser.end();
            //stream.close();
            //stream.unpipe();
            // stream.destroy();
        }
    }
});

csvParser.on("error",function(err){
    console.log("Error",err.message);
})

csvParser.on("finish",function(){
    //console.log("records",records);
    console.log("done");
})

当我尝试stream.close()时,它说的是未定义的方法。正确的清理方法是什么?

最佳答案

可读流没有close方法。close方法是只关闭读流的老方法(我不知道它是否仍在工作)
在可读流中也没有fs方法。
恐怕没有办法在流结束之前结束它。
你可以停止阅读。在您的案例中,stream在destroy中工作,因此当调用此方法时,它是对数据的下一部分的请求。如果您停止调用flowing mode,则此事件csvParser.read()停止触发。
有一些关于类似案例的好对话。

08-27 15:31