Задать вопрос
@D_K_D
Junior

Проблема в очереди исполнения кода?

Нужна функция для возврата координат местоположения пользователя. Функция написана, но возвращает значение без ожидание выполнения всего кода. В console выводит 1, 3, 4, 2 . В чём может быть проблема .
let coords;
export const AutoLocation = async () => {
  if (navigator.geolocation) {
    console.log("1 play");
    await navigator.geolocation.getCurrentPosition((pos) => {
      coords = pos.coords;
      console.log("2 play");
    });
    console.log("3 play");
  } else {
    console.log(Error);
  }
  console.log("4 play");
  return coords;
};
  • Вопрос задан
  • 79 просмотров
Подписаться 1 Простой 4 комментария
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Проблема в том, что человек, писавший эту функцию не умеет читать документацию. Иначе он бы знал, что await ожидает выполнения промиса, navigator.geolocation.getCurrentPosition всегда возвращает undefined и асинхронно вызывает каллбэк.
const position = await new Promise (
  (resolve, reject) => navigator.geolocation.getCurrentPosition(
    (p) => resolve(p),
    (e) => reject(e),
  ),
);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы