【问题标题】:Node.js HTTP-Response into variableNode.js HTTP-Response 到变量
【发布时间】:2014-08-14 02:46:32
【问题描述】:

我尝试获取 http 请求对我的变量“温度”的响应,但它不起作用,我已经尝试使用回调但我不太熟悉它,所以我现在无法解决我的问题。也许有人有想法?

谢谢和最好的问候:-)

var temperature = ''; 


http.get(url, function(res) {

//console.log("Got response: " + res.statusCode);

var bodyarr = [];

    res.on('data', function(chunk){
        bodyarr.push(chunk);
    });
    res.on('end', function(){
        //console.log(*/bodyarr.join('').toString());
        temperature = bodyarr;  
    });



    enter code here
    }).on('error', function(e) {
        console.log("Got error: " + e.message);
});



console.log(temperature); 

【问题讨论】:

  • 我也遇到了同样的问题,你解决了吗?

标签: node.js http variables httprequest global


【解决方案1】:

这里的问题是关于异步性;此时温度对象未定义,因为在请求完成之前调用了 log 方法。使用http.request,因为它是异步的;如果您想获得完整的响应,它会将回调作为参数传递给 response.end:

//The url for example is 'www.random.org/temperatures/?min=1&max=100'
var options = {
  host: 'www.random.org',
  path: '/temperatures/?min=1&max=100'
};
var temperature = ''; 
var http = require('http');
callback = function(res) {
  var bodyarr = [];
  res.on('data', function (chunk) {
    bodyarr.push(chunk);
  });

  res.on('end', function () {
    console.log(req.data);
    console.log(bodyarr);
    temperature = bodyarr.join(); 
  });
}
var req = http.request(options, callback).end();

【讨论】:

  • 你测试你的代码了吗?你在哪里定义了温度变量?
  • 抱歉,我已经更新了答案以包含 temperature 对象,这未经测试,只是基于 working code 的建议
  • 嗯,结果是一样的,console.log 的输出有效,但是温度是空的:-/
  • 它是空的,因为您试图将数组 bodyarr 分配给字符串 temperature。使用join() 方法将数组元素连接成一个字符串,然后将其分配给temperature 变量,或者只需将temperature 变量更改为一个数组。
  • 不,还是一样的结果 :-)
猜你喜欢
  • 2021-01-03
  • 2017-01-17
  • 1970-01-01
  • 1970-01-01
  • 2022-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多