如何在Node.js中的变量中存储JSON响应?

时间:2017-01-08 12:26:47

标签: javascript json node.js openweathermap

我很难从API获得响应并将其保存在变量中以便在Node.js中进一步使用它。也许我不知道语言是如何运作的。这是问题所在:

// Objective, get current temperature of New Delhi in celcius

var request = require('request');

var url = "http://api.openweathermap.org/data/2.5/weather?id=1261481&appid=#####&units=metric";

request(url, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    curTemp = JSON.parse(body).main.temp;  // curTemp holds the value we want
  }
})

// but I want to use it here
console.log(curTemp);

我想将openweathermap(即body.main.temp)的JSON响应存储到变量中。然后我将根据当前的温度撰写推文。

2 个答案:

答案 0 :(得分:0)

请求是异步的。如果要以这种方式编写异步代码,则应使用返回Promise的API,例如: axios。然后,您可以使用async/await编写代码。

答案 1 :(得分:0)

在nodejs中,它是关于你需要稍后调用的回调函数。 所以你需要创建一个推文功能,并在你获得数据时调用它!

var request = require('request');
var url = "http://api.openweathermap.org/data/2.5/weather?id=1261481& appid=#####&units=metric";
request(url, function (error, response, body) {
  if (!error && response.statusCode == 200) {
    curTemp = JSON.parse(body).main.temp;  // curTemp holds the value we want
    tweet(curTemp)
  }
})

// but I want to use it here
function tweet(data){
    console.log(data)
}

考虑到这不是在异步

中编码的好方法