NodeJS https请求onData事件触发多次

时间:2018-07-25 20:57:54

标签: node.js https request

我试图弄清楚为什么我的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&parameter2=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();

1 个答案:

答案 0 :(得分:1)

“ res”对象是从您的https请求中传递的双工流(在这种情况下,重要的是它正在读取“ data”事件)。基本上,流是打开的,直到关闭一个端点或将null写入读流端点为止。

发生的事情是https请求套接字只是多次写入您的流。如果您希望捕获从https请求发送的数据的结尾,则应为“ end”事件创建一个函数。

res.on('end',()=> console.log('w / e here'));