我试图弄清楚为什么我的console.log()
语句发生两次。如果我登录到res.on('data) { ... }
以外的控制台,则只能看到它记录一次,但是如果我登录到onData
函数中的控制台,则将触发两次。
问题:
为什么res.on('data) { ... }
开两次枪?
这是我使用的代码,直接来自此页面上的Node文档:
const https = require('https');
const options = {
hostname: 'www.myEndpoint.com',
port: 443,
path: '/path/to/endpoint?parameter1=true¶meter2=false',
method: 'GET'
};
const req = https.request(options, (res) => {
console.log('statusCode:', res.statusCode);
console.log('headers:', res.headers);
res.on('data', (d) => {
console.log('This console log happens twice for some reason');
process.stdout.write(d);
});
});
req.on('error', (e) => {
console.error(e);
});
req.end();
答案 0 :(得分:1)
“ res”对象是从您的https请求中传递的双工流(在这种情况下,重要的是它正在读取“ data”事件)。基本上,流是打开的,直到关闭一个端点或将null写入读流端点为止。
发生的事情是https请求套接字只是多次写入您的流。如果您希望捕获从https请求发送的数据的结尾,则应为“ end”事件创建一个函数。
res.on('end',()=> console.log('w / e here'));