【发布时间】:2022-01-11 03:33:11
【问题描述】:
我是 NodeJS 的新手,在查看文档并尝试使用 http.on('finish')、res.on('close') 和 res.on('end') 之后,我不明白它们有何不同。
http.get(url, res => {
res.setEncoding('utf8'); // returns string object to data event
res.on('data', string => {
const responseObj = responseDataList.find(responseObj => {
return responseObj.url === url;
});
responseObj.data += string;
});
res.on('close', () => {
console.log('[Interruption] connection closed before response was ended.'); // Never fires
})
res.on('error', console.error);
// TODO: find out difference between response.end and response.close and http.finish events
res.on('end', (data, encoding) => {
// Seems to fire at the same time that http.on('finish') fires
current++;
if (counter === current) {
responseDataList.forEach(responseObj => {
console.log(responseObj.data);
})
}
});
})
.on('error', console.error)
.on('finish', () => {
// Seems to fire at the same time that res.on('end') fires
console.log('response sent')
}); // emitted when the response is sent to the OS (not when it is received by the client)
每一种何时开火,它们有何不同?
【问题讨论】:
标签: javascript node.js http events