我试图从Open Weathermap API中获取数据,但出于某种原因,它是动态API。
要达到每三个小时的降雨量,你必须去:
json.list[0].rain['3h']
现在如果它下雪了,那么下雨'变成
json.list[0].snow['3h']
我得到了这样的代码:
return fetch(url)
.then(res => res.json())
.then(json => ({
temp1: json.list[0].main.temp,
tempmin1: json.list[0].main.temp_mix,
tempmax1: json.list[0].main.temp_max,
weather1: json.list[0].weather[0].main,
time: json.list[0].dt_txt,
name: json.city.name,
rainmillimeter1: json.list[0].rain['3h'],
snowmillimeter1: json.list[0].snow['3h'],
wind1: json.list[0].wind['speed'],
vochtigheid1: json.list[0].main['humidity'],
luchtdruk1: json.list[0].main['pressure'],
但是它会得到一个未处理的承诺拒绝,并且不会加载任何API。 如果它不存在,有没有办法让它忽略下雨或下雪?
谢谢!
答案 0 :(得分:0)
您可以使用三元运算符来检查其中一个对象是否存在:
rainmillimeter1: (json.list[0].rain) ? json.list[0].rain['3h'] : null,
snowmillimeter1: (json.list[0].snow) ? json.list[0].snow['3h'] : null,
此外,未处理的承诺拒绝通常是在承诺失败且使用.catch((e) => {})
时没有错误处理的情况下。您可能应该考虑的因素,无论何时无法访问API。
此处有更多详情:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/catch