在我的JavaScript程序中,我获取JSON文件的值,然后将它们推到数组中。但是,当我尝试获取该数组的元素时,它不会返回任何内容。
以下是推动温度的功能:
temperatures = []
get_info = (data) => {
var data = JSON.parse(data)
for(var i = 0; i < data['list'].length; i++){
temperatures.push(String(data['list'][i]['main']['temp']))
}
}
我在这里获取数据并调用函数:
weather = (city_name) => {
var key = '.......';
var base_url = 'http://api.openweathermap.org/data/2.5/forecast?';
var url = base_url + 'appid=' + key + '&q=' + city_name + '&units=metric';
fetch(url)
.then(response => response.text())
.then(contents => get_info(contents))
}
当我登录temperatures
时,它显示一个空数组[]
。
如何获取温度数组的元素?
答案 0 :(得分:0)
您的代码似乎可以正常工作。您已经考虑到 fetch 操作是异步的,因此在解决承诺后,您只能在 temperatures 变量中使用数据。
您可以在调用 get_info 方法后通过控制台日志记录来检查变量温度是否存储了正确的值:
weather = (city_name) => {
var key = '.......';
var base_url = 'http://api.openweathermap.org/data/2.5/forecast?';
var url = base_url + 'appid=' + key + '&q=' + city_name + '&units=metric';
fetch(url)
.then(response => response.text())
.then(contents => {
get_info(contents);
console.log(temperatures); // --> Here the data is available!
});
};
请注意,如果您知道API正在返回JSON,则可以调用响应的json
方法,而不是调用text
方法,然后通过{{ 1}}:
JSON.parse