Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Как передать значение переменной из вложенной функции (https://javascript.ru/forum/misc/57036-kak-peredat-znachenie-peremennojj-iz-vlozhennojj-funkcii.html)

Majax 16.07.2015 11:18

Как передать значение переменной из вложенной функции
 
Приветствую форумчан!
Знания javascript довольно поверхностные, поэтому не пинайте сильно:)
Есть такая функция:
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true"></script>
<script type="text/javascript">

   var latlng;  //тут объявляю глобальную переменную
	function codeAddress(address) {          
	    geocoder = new google.maps.Geocoder();
            geocoder.geocode( { 'address': address}, function (results) {
            myylocation = results[0].geometry.location;
            lat = myylocation.lat();
            lng = myylocation.lng();
            window.latlng = lat +','+ lng; 
            alert(latlng);//в этом месте значение переменной считается и существует
            });
            return latlng;  //а сюда не попадает, undefined        	
	}

  alert(codeAddress('moskva')); //undefined

</script>

результат выполнения: undefined
Подскажите как вытащить значение переменной lanlng из вложенной функции? что не так делаю?

Majax 16.07.2015 11:23

еще момент. Когда проверяю работу функции здесь wisdomweb.ru/editor/wweditor.php?fname=js_func2 то первый вызов undefined, а второй и последующие выводит значение, вообще запутался

nerv_ 16.07.2015 11:38

еще один :)

Как думаешь, зачем в 7-й строке объявляется функция?

Majax 16.07.2015 11:46

Цитата:

Сообщение от nerv_ (Сообщение 379961)
еще один :)

Как думаешь, зачем в 7-й строке объявляется функция?

появляются смутные подозрения что для того чтобы нельзя было вытащить:cray:

mbav 16.07.2015 12:02

Majax,
я тоже не очень шарю, но думаю, что код где return latlng на 14 строке выполняется быстрее чем обработается запрос в гугл мапс внутри функции geocode, поэтому сначала выводит undefined, а потом выбивает результат
alert(latlng);//в этом месте значение переменной считается и существует

Majax 16.07.2015 12:12

mbav, ага, вот нашел по проблеме stackoverflow.com/questions/4314270/understanding-geocoding-in-javascript
думаю сейчас как применить к своему случаю.

mbav 16.07.2015 12:20

Majax,
Можете попробовать как то запихнуть функцию в setInterval(func, время в мс) а потом как узнаете что ответ от сервера пришел отключить повторение функции через clearInterval();

interval = setInterval(function () {
// всякая фигня

if(latlng) { // если latlng имеет какое то значение 
  clearInterval(interval);
}

}, 1000);


Может как-то так

nerv_ 16.07.2015 13:20

http://javascript.ru/forum/misc/5700...remennojj.html

http://javascript.ru/forum/misc/9459...tml#post174893

Majax 16.07.2015 15:13

nerv_, спасибо конечно. Но видно мой уровень колеблется около ноля. Пока ничего не получается...

MallSerg 16.07.2015 16:37

такая же тема и их сотни если не тысячи на этом сайте.
http://javascript.ru/forum/misc/4920...-sobytijj.html
http://javascript.ru/forum/jquery/50...tml#post332675


Часовой пояс GMT +3, время: 23:31.