在NodeJS中结束之前closuresHttp响应stream

我正在使用nodejs中的请求模块发出请求,我正在收到stream式响应。 这个响应stream被传送到csvparsing器并将logging填充到一个数组中。 一旦我得到预设的logging数,我想结束csvparsing并closures响应stream。 如何正确清理响应stream 这是伪代码

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(),这是说未定义的方法。 什么是清理它的正确方法..?

可读stream没有close方法。 close方法是老黑客closures只读fs读取stream(我不知道它是否仍然工作)

另外在可读stream中没有方法destroy

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

你可以停止阅读stream。 在你的情况下stream工作在flowing mode ,因此这个方法csvParser.read()被调用时,是请求下一部分数据。 如果你停止调用csvParser.read()那么这个事件csvParser.on("readable",function(){停止触发。

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