存储来自GET请求的数据,以便稍后在节点JS中使用

时间:2018-03-25 15:37:01

标签: node.js get

假设我们有一个执行GET请求的函数。

var http = require("http");
var http = require('https');
function summonerstats(region,name,param){
var options = {
    host: region+'1.api.riotgames.com',
    path: '/lol/summoner/v3/summoners/by-name/'+name+'?api_key=RGAPI-05ccfd5f-24d8-44ea-98b2-4dc00dd075b1'
};

var req = http.get(options, function(res) {

var bodyChunks = [];
res.on('data', function(chunk) {
    bodyChunks.push(chunk);
}).on('end', function() {
    var body = Buffer.concat(bodyChunks);
    var data=JSON.parse(body);
    if (param!=null){
        data=data[param];
    } 
    return(data);
})
});

req.on('error', function(e) {
    console.log('ERROR: ' + e.message);
});
}
summonerstats("euw","CD%20REBI"); 
console.log(data);

为什么没有定义数据?知道它是在函数内部定义的,如果我们在它内部控制它。它返回一个值

1 个答案:

答案 0 :(得分:0)

http是一个异步操作。因此,当您执行console.log(data)时,它将无法获得GET来电中所需的值。

为了在其他地方使用结果,你应该在Promise调用中包装http调用。然后使用Promise调用的已解析值。

可以找到更多阅读here