Я использую реагирование, и мне нужно создать функцию, которая проверяет, есть ли у пользователя координаты местоположения, а если нет - то чтобы получить их с помощью API геолокации.
Я создал помощника.js файл с функцией ниже, чтобы получить координаты из API геолокации.Как вы можете видеть - функция navigator.geolocation.getCurrentPosition является асинхронной, поэтому я ничего не получу в первый раз - как я могу использовать функцию getUserLocation, чтобы получить координаты для действия?
getUserLocation: function () {
let outLatLonObj = {
lat: '',
lon: '',
status: ''
}
function success(position) {
outLatLonObj.lat = position.coords.latitude;
outLatLonObj.lon = position.coords.longitude;
return outLatLonObj
}
function error() {
outLatLonObj.status = 'Unable to retrieve your location';
}
if (!navigator.geolocation) {
outLatLonObj.status = 'Geolocation is not supported by your browser';
} else {
outLatLonObj.status = 'Locating…';
navigator.geolocation.getCurrentPosition(success, error);
}
return outLatLonObj; // not returns anything at first
},
Здесьэто действие, которое должно отправить координаты пользовательскому интерфейсу
export const checkIfUserHasCoordinates = () => {
return {
type: "CHECK_FOR_CORDINATES",
payload: helpers.getUserLocation() //coordinates
};
}