我正在尝试从我调用API时收到的Promise Object中检索数据。代码的一部分是:
handleFormSubmit = e => {
e.preventDefault();
geocodeByAddress(this.state.address)
.then(results => getLatLng(results[0]))
.then(latLng => {
const lat = latLng.lat;
const lng = latLng.lng;
this.setState({
lat,
lng
});
console.log(this.state.lat, this.state.lng);
fetch(`https://api.openweathermap.org/data/2.5/weather?lat=${lat}&lon=${lng}&appid=${API_KEY}&units=metric`)
.then(data => {
const dataWeather = data.json();
const prefix = "wi wi-";
// let code = data_weather.weather[0].id;
// let icon = weatherIcons[code].icon;
// if (this.state.address) {
// this.setState({
// temperature: Math.round(data.main.temp),
// city: data.name,
// country: data.sys.country,
// humidity: data.main.humidity,
// description: data.weather[0].description,
// icon: prefix + icon,
// error: ""
// });
// } else {
// this.setState({
// temperature: undefined,
// address: "",
// humidity: undefined,
// description: undefined,
// icon: undefined,
// error: "Please enter city and country name"
// });
// }
return dataWeather;
})
.then(dataWeather => {
console.log(dataWeather);
})
})
.catch(error => console.error("Error", error));
};
当我得到一个承诺作为回应时,我试图将.then置于其后,但我仍然得到一个承诺作为回应。我要展示的最终状态是注释掉的内容。 This is a link to the result in the console (I intend to get to the weather array)
答案 0 :(得分:0)
试试这个
fetch(api)
.then( response => response.json())
.then( data => {
const dataWeather = data;
...
});
希望这会有所帮助!