вернуть данные переменной массива после метода обещания? - PullRequest
0 голосов
/ 28 апреля 2018

Я создал новую функцию обещания, чтобы установить асинхронную геолокацию как глобальную функцию.

function getUsrLoc() {
return new Promise(function(resolve, reject) {
                    if(navigator.geolocation){
                        navigator.geolocation.getCurrentPosition(resolve)
                    } else {
                        reject('Geolocation is not supported by this browser or OS');
                    }
                });
}

Теперь я создал функцию, которая передает координаты в новый массив, возвращая новую переменную с ожидаемыми элементами массива после запуска метода .then.

//push coordinates into new array

function showPosition(position) {
     var coordinates = new Array();
     coordinates.push(Math.floor(position.coords.latitude))
     coordinates.push(Math.floor(position.coords.latitude))
     console.log(coordinates);
     return coordinates;
}

Теперь я могу запустить метод .then функции getUsrLoc () и подключить функцию showPosition в качестве параметра.

getUsrLoc().then(showPosition);

Теперь при запуске координаты выводятся на консоль (после запроса браузера), но не возвращают координаты новой переменной.

coordinates;
//undefined

Что мне здесь не хватает?

1 Ответ

0 голосов
/ 28 апреля 2018

Вы не можете объявить переменную заранее и ожидать, что она будет иметь правильное значение. Вместо этого вы должны создать обработчик then, чтобы получить доступ к переменной coordinates:

getUsrLoc()
  .then(showPosition)
  .then(function(coordinates) {
    // Do your stuff here
  });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...