我正在尝试显示用户将按名称搜索的城市的天气。我使用的第一个API是允许用户搜索的城市名称。这将返回一个带有lat和lon的数据对象,然后我将使用该数据对象运行第二个fetch请求,以获取由lat和lon搜索的城市的天气预报。这是我目前的代码,我已经工作了。
var citySearch = function() {
inputFormEl = document.getElementById("city").value;
const apiCall = `https://api.openweathermap.org/data/2.5/weather?&q=` + inputFormEl + apiKey;
fetch(apiCall)
.then(function(response) {
response.json()
.then(function(data) {
console.log(data);
var lat = data.coord.lat;
var lon = data.coord.lon;
getCity(data)
})
}).then(function() {
var secCall = `https://api.openweathermap.org/data/2.5/onecall?lat=${Lat}&lon=${Lon}&appid=087ab696412a7356255185b8f55d9574`;
fetch(secCall)
console.log(secCall);
})
}
字符串
1条答案
按热度按时间ua4mk5z41#
在每个
then
回调中,你应该 * 返回 * 你想要传递的信息--可以是一个promise,也可以只是一个值--以避免“回调地狱”的典型嵌套。一旦你有了纬度和经度,就可以立即使用它来执行下一个
fetch
。所以它变成了这样--我删除了你的appid:
字符串
使用
async/await
语法,所有这些都更容易:型