@Artem0071
Безработный mr. Junior

Почему выдает undefined?

Есть код:
var coord1;
              var myGeocoder1 = ymaps.geocode(_self.city1);

              myGeocoder1.then(
                function (res) {
                  coord1 = res.geoObjects.get(0).geometry.getCoordinates();
                  console.log(coord1); // вот здесь выдает правильно
                }
              );

              console.log(coord1); // а вот здесь выдает undefined


Как это можно исправить?
  • Вопрос задан
  • 281 просмотр
Пригласить эксперта
Ответы на вопрос 4
@xutesayor
Потому что обработчик промиса выполнится только после того как завершится выполнение основного потока программы. Это вам не php.
Ответ написан
@expeerd
Я так понимаю, что код у вас на сервере на Node.js. В таком случае вы просто имеете дело с асинхронностью. Если кратко: у вас console.log выполняеться до геокодинга. Кидать вам свое видение решения бесполезно потому, что, чтобы писать бэкенд, вам надо понять это самому, поэтому вот пара ссылок: теория , практика .
Ответ написан
Комментировать
AxianLTD
@AxianLTD
А с чего ему знать значение coord1 в этой строке? Оно действительно не определено, так как считается внутри локальной функции, в параметре другой функции, т.е. существует только в момент вызова mygeocoder. Как исправить, а кто же его знает чего вы пишите-то.
Ответ написан
Комментировать
tomnolane
@tomnolane
профессиональный разработчик
Цикл do…while, где идет проверка coord1 на undefined

do
{  
} while(typeof coord1 == "undefined");
console.log(coord1);
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы