我目前正在运行代码 -
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
的回复。
为什么?
提前谢谢。
答案 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);
})