Api json返回“undefined”

时间:2016-11-21 09:06:18

标签: javascript json

我目前正在运行代码 -

const request = require('request')
const apiKey = 'XXXXXXXXXXXXXX'

var dat;
let url = 'http://api.worldweatheronline.com/premium/v1/marine.ashx'
let qs = {
    q: '-34.48,150.92',
    format: 'json',
    apiKey
}
request({ url, qs }, (err, response, body) => {
    if (err)
        return console.error(err)
    if (response.statusCode != 200)
        return console.error('status code is', response.statusCode)
    body = JSON.parse(body)
    dat = body.data.hourly[0].tempC


})
console.log(dat);

我期待15的响应,因为我引用了返回的API

{
"data": {
    "request": [],
    "weather": [{ 
        "date": "2016-11-20",
        "astronomy": [],
        "maxtempC": "27",
        "maxtempF": "80",
        "mintempC": "15",
        "mintempF": "58",
        "hourly": [{
            "time": "0",
            "tempC": "15",
...

虽然我只收到Undefined的回复。 为什么? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

您需要将console.log放在回调中,否则它将在回调返回之前执行,并返回来自服务器的数据。

const request = require('request')
const apiKey = 'XXXXXXXXXXXXXX'

var dat;
let url = 'http://api.worldweatheronline.com/premium/v1/marine.ashx'
let qs = {
q: '-34.48,150.92',
format: 'json',
apiKey
}
request({ url, qs }, (err, response, body) => {
if (err)
return console.error(err)
if (response.statusCode != 200)
return console.error('status code is', response.statusCode)
body = JSON.parse(body)
dat = body.data.hourly[0].tempC
console.log(dat);
})