如何从NodeJS网站获取JSON?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (408)

因我在异步编程方面遇到了困难。我试图从一个网站获得一个JSON,并将它传递给一个变量供以后使用,以测试我一直在使用以下代码:

var https = require("https");
var a;
function getter(url){
  var request = https.get(url, function(response){
    var body = "";
    response.on("data", function(chunk){
      body += chunk;
    });
    response.on("end", function(){
      if(response.statusCode === 200){
        try{
          a = JSON.parse(body);
        }catch(err){
          console.log(err);
        }
      }
   })
 })
};
getter('https://api.nasa.gov/planetary/apod?api_key=DEMO_KEY');
console.log(a);

当我运行这个程序时,我得到了一个未定义的,从我所读到的内容来看,这似乎是有意义的。但是我不清楚接下来该做什么。我将如何将这个JSON传递到一个变量中呢?

提问于
用户回答回答于

http.get是异步的,并在事件发生时执行事件处理程序。当你调用getter()这个函数时立即返回,即它不等待事件并执行下一个语句console.log(a)

此外,js是单线程的,并且当前执行堆栈永远不会因任何其他事件/回调而中断。因此事件处理程序只能在当前执行结束时运行,即包含更多语句。因此,console.log()将始终在请求的任何事件处理程序之前执行,因此a仍未定义。

如果要在请求完成后继续,则必须从事件处理程序执行此操作。

扫码关注云+社区

领取腾讯云代金券