Как регистрировать части массива? - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь записать местоположение пользователя в массив для пользователя позже.Пытаясь проверить, работает ли он, я обнаружил, что весь массив будет регистрироваться на консоли, но если я попытаюсь зарегистрировать только один элемент в массиве, я получаю сообщение об ошибке.Интересно, может ли кто-нибудь помочь мне понять, почему.

Javascript ниже

window.onload = function getLocation() {
    var userlocation = [];
    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(showPosition);
    } else { 
      x.innerHTML = "Geolocation is not supported by this browser.";
    }


  function showPosition(position) {
    userlatitude = position.coords.latitude;
    userlongitude = position.coords.longitude;
    userlocation.push(userlatitude);
    userlocation.push(userlongitude);
  }

    console.log(userlocation[0]);
    console.log(userlocation);
}

Я ожидаю, что console.log (userlocation [0]) выведет пользовательскую широту, но она выглядит какне определено.

1 Ответ

0 голосов
/ 27 декабря 2018

navigator.geolocation.getCurrentPosition является асинхронным.На момент выполнения ваших консольных операторов массив еще не был заполнен.Причина того, что в консоли регистрируется полный массив, заключается в том, что инструменты разработчика вашего браузера отображают указатель на объект массива, а не содержимое массива во время оператора консоли.

Есливы хотите убедиться, что у вас есть значения, предоставленные функцией getCurrentPosition, вы должны поместить код, который полагается на них, в обратный вызов успеха:

window.onload = function getLocation() {
    var userlocation = [];
    if (navigator.geolocation) {
      navigator.geolocation.getCurrentPosition(showPosition);
    } else { 
      x.innerHTML = "Geolocation is not supported by this browser.";
    }


  function showPosition(position) {
    userlatitude = position.coords.latitude;
    userlongitude = position.coords.longitude;
    userlocation.push(userlatitude);
    userlocation.push(userlongitude);

    console.log(userlocation[0]);
    console.log(userlocation);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...