【问题标题】:Closing Http response stream in NodeJS before it ends在 NodeJS 结束之前关闭 Http 响应流
【发布时间】:2016-01-29 09:59:49
【问题描述】:

我正在使用 nodejs 中的请求模块来发出请求,并且我得到了流式响应。此响应流通过管道传输到 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() 时,它说的是未定义的方法。清理它的正确方法是什么..?

【问题讨论】:

    标签: node.js http csv stream


    【解决方案1】:

    没有close 可读流的方法。 close 方法是只关闭 fs 读取流的旧方法(我不知道它是否还在工作)

    在可读流中也没有方法destroy。

    恐怕没有办法在流结束之前结束它。

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

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

    【讨论】:

      猜你喜欢
      • 2022-07-11
      • 2021-03-19
      • 2013-07-05
      • 2013-10-17
      • 2018-06-14
      • 2017-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多