我试图从打开的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。有没有办法让它忽略雨或雪,如果不存在?
谢谢!
您可以使用三元操作员检查其中一个对象是否不存在:
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/reference/global_objects/promise/catch