2016-11-21 2 views
-1

Я в настоящее время работает code-Api 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. Почему? Спасибо заранее.

+0

Асинхронный вызов функции – Satpal

ответ

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); 
}) 
+1

Нам не нужен еще один ответ на этот вопрос. :-) –

Смежные вопросы