Node.js官方文档中Response的data与close事件说明位置咨询
Node.js HTTP Response 对象事件说明
1. data与close事件的文档位置
你代码中的response是http.IncomingMessage类的实例,它继承自stream.Readable类,所以data和close事件的详细定义在Stream模块的Readable类文档中:
data事件:当流有可读取的数据时触发,每次传递一块数据片段(chunk),这也是你用来拼接响应体的核心逻辑。close事件:当流的底层资源被关闭时触发,无论响应数据是否完全读取。
另外,在HTTP模块的http.IncomingMessage章节中,会明确标注它继承了Stream的所有事件,同时列出自身特有的事件。
2. Response对象支持的全部事件
分为「继承自Stream.Readable的通用事件」和「HTTP模块专属事件」两类:
继承自Stream.Readable的核心事件
data:收到响应数据块时触发close:流底层资源关闭时触发end:所有响应数据读取完成时触发(更适合用来处理完整响应体,因为它仅在数据全部读取完毕后触发,避免close可能带来的不完整数据问题)error:流读取过程中发生错误时触发readable:流有数据可供读取时触发(属于拉取式读取模式,和data的推送式模式不同)
HTTP IncomingMessage专属事件
aborted:请求或响应被主动中止时触发information:收到1xx类信息响应(如100 Continue)时触发
代码优化建议
你当前用close事件处理完整数据,更稳妥的方式是改用end事件,示例:
response.on('end', () => { console.log('Retrieved all data'); console.log(JSON.parse(data)); });
内容的提问来源于stack exchange,提问作者Amrmsmb
相关产品推荐
相关产品推荐

