将请求主体存储为全局变量

时间:2017-06-09 07:04:56

标签: javascript node.js request

我有一个需要使用请求的项目,并且正在使用由节点运行的javascript。我无法将请求的主体存储到全局变量,因此我可以在其他函数中访问它。有没有办法将响应保存在全局变量中?感谢。

var request = require('request');

var globalBody = "";

var options = {
    url: 'http://www.google.com/',
    headers: {
      'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B350 Safari/8536.25'
    }
}
request(options, function (error, response, body) {
   if(error != null){
       console.log('error:', error);
   }
   if(response.statusCode != 200){
       console.log('statusCode:', response && response.statusCode);
   }else{
       globalBody = body;
   }
});


console.log(globalBody)

最后一行" console.log(globalBody)"结果""但我希望它显示请求的正文。有没有办法做到这一点?

2 个答案:

答案 0 :(得分:0)

使用window.localStorage存储全局

答案 1 :(得分:0)

在请求方法回调之前调用console.log(globalBody)。 globalBody值会在您尝试打印后更新。请尝试以下代码。

var request = require('request');

var globalBody = "";

var options = {
    url: 'http://www.google.com/',
    headers: {
      'User-Agent': 'Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_4 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko) Version/6.0 Mobile/10B350 Safari/8536.25'
    }
};

request(options, function (error, response, body) {
   if(error != null){
       console.log('error:', error);
   }
   if(response.statusCode != 200){
       console.log('statusCode:', response && response.statusCode);
   }else{
       globalBody = body;
       console.log(globalBody);
   }
});

在成功完成异步请求后,您需要调用其他函数以在其中使用全局变量。