жду возвращения в ожидании обещания - PullRequest
0 голосов
/ 02 ноября 2018

в этом примере рез содержит ожидающее обещание. Мне нужно разрешить его с другим кодом, пока он не будет решен:

 function getCoordinates() {
    return new Promise(function (resolve, reject) {
        navigator.geolocation.getCurrentPosition(resolve, reject);
    });
}

async function getAddress() {
    await getCoordinates();
}
const  rez =  getAddress();
alert('wait for rez');

Я знаю, что могу сделать что-то вроде getAddress().then(function () { alert('wait for rez')} );, но есть ли способ продолжить, не входя в область действия then?

Ответы [ 2 ]

0 голосов
/ 03 ноября 2018

Как было прокомментировано, функции, которые вызывают обещание, должны быть async, в противном случае он возвращает ожидающее обещание.

$(window).load(async function () {
    var rez = await getCoordinates();
    alert(rez.coords.latitude);});

function getCoordinates() {
    return new Promise(function (resolve, reject) {
    navigator.geolocation.getCurrentPosition(resolve, reject);
});};
0 голосов
/ 02 ноября 2018

Вам необходимо await также выполнить асинхронную операцию:

(async function(){
  function getCoordinates() {
      return new Promise(function (resolve, reject) {
          navigator.geolocation.getCurrentPosition(resolve, reject);
      });
  }

  async function getAddress() {
      await getCoordinates();
  }
   const rez = await getAddress();
   alert('wait for rez');
})()
...