我正在使用地理位置api通过异步请求返回用户的纬度和经度。
在一个单独的函数“ getWeatherData()”中,我需要将lat和long传递到以下URL:https://api.darksky.net/forecast/c2f9808ca1a73ccc2367f463c969facc/ $ {this.state.lat},$ {this.state.long}并从中获取数据只有在我有经纬度的情况下才能使用天气API。
我的问题是,在返回经纬度和long值之前调用了“ getWeatherData()”,因此我最终对纬度和经度值使用了空值。
我尝试使用async / await以及if语句。我试图避免输入“回调地狱”。
class App extends React.Component{
state = { lat: null, long: null, errormsg: '' };
componentDidMount(){
const getPosition = () => {
window.navigator.geolocation.getCurrentPosition(
position => {this.setState( {lat: position.coords.latitude,
long: position.coords.longitude} )},
error => this.setState( {errormsg: error.message} ),
);
}
const getWeatherData = () => {
let apiCall = `https://api.darksky.net/forecast/c2f9808ca1a73ccc2367f463c969facc/${this.state.lat},${this.state.long}`;
fetch(apiCall)
.then(res => res.json())
.then(response => console.log('Success:', JSON.stringify(response)))
.catch(error => console.log(error))
console.log(apiCall);
}
async function getWeather(){
await getPosition()
await getWeatherData()
}
getWeather();
}
当我console.log apiCall时:https://api.darksky.net/forecast/c2f9808ca1a73ccc2367f463c969facc/null,null
成功:{“代码”:400,“错误”:“给定的位置(或时间)无效。”}