ошибка с async/await
Подскажите, пжлста, пытаюсь освоить async/await. Пытался на них переписать с промисов, но почему то вовзращает undefined
//этот блок с промисами работает, хотелось бы понять почему asunc await не пашет
// export function currentGeoPositionRequest() {
// return new Promise((res, rej) => {
// const currentPosition = navigator.geolocation.getCurrentPosition(
// (position) => res(position),
// (e) => rej(e)
// )
// })
// }
export async function currentGeoPositionRequest() {
try {
const currentPosition = await navigator.geolocation.getCurrentPosition(
(position) => {
const { latitude, longitude } = position.coords
return { latitude, longitude }
},
(e) => console.error('Error>>', e)
)
return currentPosition
} catch (e) {
console.error('Error>>', e)
}
}
async function log() {
const currentPosition = await currentGeoPositionRequest()
console.log(currentPosition) // undefined
}
log()
Ответы (1 шт):
Автор решения: Grundy
→ Ссылка
getCurrentPosition ничего не возвращает, поэтому нет смысла ни присваивать результат чему-нибудь, ни добавлять await перед вызовом.
Чтобы await заработал функцию принимающую callback нужно обернуть в Promise
async function getCurrentPositionPromise() {
return new Promise((res, rej) => {
navigator.geolocation.getCurrentPosition(
(position) => res(position),
(e) => rej(e)
)
})
}
непосредственно к Promise уже можно применить await
export async function currentGeoPositionRequest() {
try {
const currentPosition = await getCurrentPositionPromise();
return currentPosition
} catch (e) {
console.error('Error>>', e)
}
}