bootd
@bootd
Гугли и ты откроешь врата знаний!

Почему не записывается значение в переменную?

Всем добрый день. Почему у меня не записывается значение координат в переменную position, объявленную в самом, начале из функции geocode??
var position,
		geocoder = new google.maps.Geocoder();

	geocoder.geocode({
		'address': address
	}, function(results, status) {
		if (status === google.maps.GeocoderStatus.OK) {
			position = results[0].geometry.location;
console.log(position);// Все ок, координаты записаны, карта показалась!
			map.panTo(position);
		} else {
			alert('Адрес указан не верно: ' + status);
		}
	});
console.log(position); // А тут они undefined, разве я не записал значение в переменную?


Почему так?
  • Вопрос задан
  • 190 просмотров
Решения вопроса 2
@dixoNich
frontend developer
Потому что geocoder.geocode - асинхронная функция, и когда вы выводите position в конце - значение ещё не нет в ней. Отправляйтесь читать про основы JS, а то будете каждый день такие вопросы задавать.
Ответ написан
edtoken
@edtoken
Full-stack Javascript/Python Developer
сделайте в двух этих местах alert(1) и alert(2) что бы наглядно увидеть последовательность выполнения.

geocoder.geocode({}, callback);

где callback - выполняется после операции геокодирования, как следствие в начале будет выполнен console.log(position), а потом (когда гугл вернет ответ апи) выполнится position = results[0].geometry.location;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы