微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何访问从 res.on 函数中的 GET 请求获得的结果?

如何解决如何访问从 res.on 函数中的 GET 请求获得的结果?

我想在 res.on 函数之外使用 d 变量,但它没有看到。

换句话说,我如何访问从我的 GET 请求中得到的结果。 (我想发给客户端)

目前我可以使用 process.stdout.write(d) 行记录它。在 res.on 之外的任何地方都不起作用(即使我在外面声明)。谢谢。

socket from app 
     p
     acks: {0: ƒ}
     connected: false
     disconnected: true
     flags: {}
     ids: 1
     io: p {nsps: {…},subs: Array(3),opts: {…},_reconnection: true,_reconnectionAttempts: Infinity,…}
     json: p {io: p,nsp: "/",json: p,ids: 1,acks: {…},…}
     nsp: "/"
     receiveBuffer: []
     sendBuffer: [{…}]
     subs: (3) [{…},{…},{…}]
     _callbacks: {$connecting: Array(1),$connect: Array(1),$connection: Array(1)}
     __proto__: Object

解决方法

您需要使用“结束”事件。在请求正文之外声明一个数据变量,并在所有数据下载后处理数据。

let data;

function processData(data) {
  // process the data here
}

const req = https.request(options,res => {
  console.log(`statusCode: ${res.statusCode}`)
 
  res.on('data',d => {
    data += d;
  })

  res.on("end",d => {
    // Now all the data is stored in the data variable
    processData(data);
  });
})

另一种方法是将 res 传输到可写流中,因为 res 是可读流。

res.pipe(any_writable_stream_here);
,

您可以使用承诺来做到这一点:

const https = require('https')
const options = {
  hostname: 'encrypted.google.com',port: 443,path: '/',method: 'GET'
};

const req = () => {
  return new Promise((response,reject) => {
  let result = https.request(options,res => {
    console.log('in here');
    console.log(`statusCode: ${res.statusCode}`);

            let data;
            res.on('data',d => {
                data += d;
                // process.stdout.write(d)
             })
  
  
             res.on('error',error => {
              console.error(error);
              reject(error);
            })
  
            res.on("end",d => {
              response(data);
            });
   })
   result.end();
  })
}


req().then(data => { console.log(data)}).catch(console.log);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。