Показать сообщение отдельно
  #1 (permalink)  
Старый 23.11.2021, 10:13
Аватар для mav1
Аспирант
Отправить личное сообщение для mav1 Посмотреть профиль Найти все сообщения от mav1
 
Регистрация: 30.08.2010
Сообщений: 57

Как сделать функцию асинхронной, если она состоит из нескольких функций в js?
У меня есть подобная функция:

function addressToCoords(local) {
    var address = local;
    var result = '';
    geocoder.geocode( { 'address': address}, function(results, status) {
        
      if (status == 'OK') {
         result = results[0].geometry.location;
      } else {
        console.log('Error: ' + status);
         result = '';
      }
        alert('Result is '+result);
    });
        
    alert('Result2 is '+result);
    return result;
  }


Так как для выполнения геокодирования необходимо некоторое время, сначала выводится сообщение "Result2 is ", и только после этого сообщение "Result is {координаты}" , ну и функция возвращает пустышку вместо {координат}. Как я понимаю, я должен сделать так, чтобы функции выполнялись асинхронно. Вижу в документации js на сайте мозиллы подобный пример:

async function f() {
  return 1;
}
f().then(alert);


Но как быть в моем случае с geocoder.geocode...?
Ответить с цитированием