node.js - 在 NodeJS 结束之前关闭 Http 响应流

标签 node.js http csv stream

我正在使用 Node.js 中的请求模块来发出请求,并且正在流式传输收到的响应。该响应流通过管道传输到 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 方法是旧的 hack,仅关闭 fs 读取流(我不知道它是否仍然有效)

此外,可读流中没有方法destroy

恐怕没有方法可以在流结束之前结束流。

您可以停止从流中读取。在您的情况下,流在流动模式下工作,因此调用该方法csvParser.read()时,会请求下一部分数据。如果您停止调用 csvParser.read(),则此事件 csvParser.on("readable",function(){ 停止触发。

有一些很好的对话https://groups.google.com/forum/#!msg/nodejs/eGukJUQrOBY/URD8I7tNxRUJ关于类似的案例。

关于node.js - 在 NodeJS 结束之前关闭 Http 响应流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33411212/

相关文章:

c - 使用 wget 编程并将文件保存到内存中

http - 不同浏览器中 URL 的最大长度是多少?

javascript - 根据时间戳条件过滤数组中的唯一对象

node.js - 使用 Socket.io 向一个用户发送消息

javascript - 更新功能在使用 node.js 和 angular js 的 MEAN Stack 中不起作用

r - 在 Shiny 的应用程序中选择文件夹或文件夹目录

python - CSV文件和python中的控制字符

javascript - Electron 存在而不会发出 render-process-gone 事件

java - 如何从Java中的rest请求中检索客户端证书

python - 使用 Tweepy 将扩展推文保存到 CSV?