我正在尝试存储我在函数内计算的纬度和经度值。如果我console.log
在函数中同时使用了两个值,那么它工作正常。但是,如果我返回这些值以在其他地方使用它们,那么我不能这样做(它会在控制台中引发错误,因为此 coordinates
列表未定义)。无论我从这个Geocoding
函数返回什么,它都会在控制台中显示未定义。这是代码片段:
function Geocoding() {
axios.get('https://maps.googleapis.com/maps/api/geocode/json', {
params: {
address: enteredAddress,
key: 'my API key here'
}
})
.then(function (response) {
var lat = response.data.results[0].geometry.location.lat;
var lng = response.data.results[0].geometry.location.lng;
return [lat, lng];
})
.catch(function (error) {
console.log(error);
});
}
const submitHandler = (event) => {
event.preventDefault();
var coordinates = Geocoding();
const userInput = { //object
location: {
latitude: coordinates[0],
longitude: coordinates[1],
maxDistance: enteredDistance
},
instrumentType: enteredInstrumentType,
awardNumber: enteredAwardNumber,
includeRetired: enteredIRI
};
props.onSaveUserInput(userInput);
setEnteredAddress('');
setEnteredDistance('');
setEnteredInstrumentType('');
setEnteredAwardNumber('');
setEnteredIRI('');
};
问题是Geocoding
没有返回任何东西。无论如何,如果可能的话,我会将代码转换为async
/await
以便更容易理解。看看下面用async
/固定的相同代码await
。
async function Geocoding() {
try {
const response = await axios.get('https://maps.googleapis.com/maps/api/geocode/json', {
params: {
address: enteredAddress,
key: 'my API key here'
}
})
var lat = response.data.results[0].geometry.location.lat;
var lng = response.data.results[0].geometry.location.lng;
return [lat, lng];
} catch (error) {
console.error(error)
throw error;
}
}
const submitHandler = async (event) => {
event.preventDefault();
var coordinates = await Geocoding();
const userInput = { //object
location: {
latitude: coordinates[0],
longitude: coordinates[1],
maxDistance: enteredDistance
},
instrumentType: enteredInstrumentType,
awardNumber: enteredAwardNumber,
includeRetired: enteredIRI
};
props.onSaveUserInput(userInput);
setEnteredAddress('');
setEnteredDistance('');
setEnteredInstrumentType('');
setEnteredAwardNumber('');
setEnteredIRI('');
};
请注意,要调用Geocoding
您还需要使用async
/await
或使用Promise.then
likeGeocoding().then((coordinates) => {...})
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句