为什么我无法在请求方法中从正文获取数据

时间:2019-05-17 07:21:29

标签: node.js api

我尝试从GET请求中获取JSON数据,并且可以在请求中看到正文。如何获取数据?

当前使用NodeJ,这是JavaScript的基础。

var definedURL="https://api.etherscan.io/api?module=account&action=tokentx&contractaddress=0x6a750d255416483bec1a31ca7050c6dac4263b57&page=1&offset=100&sort=asc&apikey=YourApiKeyToken";
var request = require('request') 

var information=[];
request({ 
    url: definedURL, 
    json: true 
}, function (error, response, body) { 

if (!error && response.statusCode === 200) {
    //console.log(body.result[0]);
    information.push(body.result[0]);
} 
});
console.log(information);

我希望在此之后,我将看到结果的包含,但现在它仍然显示[]。

1 个答案:

答案 0 :(得分:0)

因为您正在进行异步请求。异步操作将在主线程执行后完成。

console.log(information) // execute before your call

您需要等待请求调用完成并将接收到的数据推送到information

有两种方法可以做到这一点-

异步/等待-MDN Reference

var definedURL="https://api.etherscan.io/api?module=account&action=tokentx&contractaddress=0x6a750d255416483bec1a31ca7050c6dac4263b57&page=1&offset=100&sort=asc&apikey=YourApiKeyToken";
var request = require('request') 

var information=[];

async () => {
  await request({ 
      url: definedURL, 
      json: true 
  }, function (error, response, body) { 

      if (!error && response.statusCode === 200) {
          //console.log(body.result[0]);
          information.push(body.result[0]);
      } 
  });
  console.log(information)
}();

承诺 MDN reference

var definedURL="https://api.etherscan.io/api?module=account&action=tokentx&contractaddress=0x6a750d255416483bec1a31ca7050c6dac4263b57&page=1&offset=100&sort=asc&apikey=YourApiKeyToken";
var request = require('request') 

var information=[];
var Promise  = new Promise((resolve,reject) => {
  request({ 
      url: definedURL, 
      json: true 
  }, function (error, response, body) { 
        if (!error && response.statusCode === 200) {
            //console.log(body.result[0]);
            information.push(body.result[0]);
            resolve()
        } 
  });
})

Promise.then(() => {
    console.log(information)
})