 
			
				17.10.2014, 00:12
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 17.10.2014 
					
					
					
						Сообщений: 4
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				Видимость переменной при асинхронном запросе. Как передать и получить значение?
			 
			
		
		
		
		Не силен в Аяксе. 
Понял что дело в callback, но как реализовать не знаю, подскажите. 
Имеем код (подключена библиотека работы с Яндекс Картами)
 
var coordinats;
var myGeocoder = ymaps.geocode("Москва");
myGeocoder.then(
    function (res) {
        coordinats = res.geoObjects.get(0).geometry.getCoordinates();
        alert('Координаты объекта :' + coordinats); // здесь всё верно, на экран получаю координату
    }  
);
// Как за пределами фунцции получить доступ к переменной coordinats ?
// Чтобы вызвать так?
alert('И тут Координаты объекта :' + coordinats);
Спасибо!  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.10.2014, 00:27
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.09.2010 
					
					
					
						Сообщений: 8,804
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Вас где штампуют )) 
Не совру, если скажу что твой вопрос при мне задается где-то 15й раз    
		
	
		
		
		
		
		
			
				__________________ 
				В личку только с интересными предложениями   
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.10.2014, 00:28
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.09.2010 
					
					
					
						Сообщений: 8,804
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Чувак, запрос на сервер занимает некоторое время. 
Гугли метод, который обращается в будущее и вытягивает оттуда значение переменной. 
		
	
		
		
		
		
		
			
				__________________ 
				В личку только с интересными предложениями   
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.10.2014, 00:30
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.09.2010 
					
					
					
						Сообщений: 8,804
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Это как отправить ребенка за молоком, поймать его на пороге, когда он только собрался выйти, и трясти, требуя молоко )) 
Ну а че. За молоком отправил? Отправил. Где молоко? Не успел еще сходить? А не волнует )) 
		
	
		
		
		
		
		
			
				__________________ 
				В личку только с интересными предложениями   
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.10.2014, 00:41
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 17.10.2014 
					
					
					
						Сообщений: 4
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	
		
			Сообщение от danik.js
			 
		
	 | 
 
	
		Чувак, запрос на сервер занимает некоторое время. 
Гугли метод, который обращается в будущее и вытягивает оттуда значение переменной.
	 | 
 
	
 
 Чувак, я тебя понял. И примерно понимаю что искать. И что ответ многим очевиден. 
Но тыкни пальцем где есть ответ, коли такой шустрый. Дай ссылку, а лучше поправь код. Я искал, честно!  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.10.2014, 00:50
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.09.2010 
					
					
					
						Сообщений: 8,804
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Я же объяснил - два эти участка кода разнесены по времени.  
Ты хотя бы на порядок всплытия алертов обрати внимание. А ведь тот алерт, который работает, всплывает сразу как только у тебя стали известны координаты, то есть до этого момента нет никаких координат. 
 
Вывод - юзай координаты именно в том месте. Если вопрос в организации кода, то пожалуйста: вынеси код в отдельную функцию, но вызывай ее именно из then(), в callback-функции. 
		
	
		
		
		
		
		
			
				__________________ 
				В личку только с интересными предложениями   
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.10.2014, 16:42
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Новичок на форуме 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 17.10.2014 
					
					
					
						Сообщений: 4
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Скорректировал код. 
Но всё равно не так как надо. Прошу помочь.
 
var coords;
var x;
var y;
function init(callback) {   
 
var myGeocoder = ymaps.geocode(city);
myGeocoder.then(
    function (res) {
        coords = res.geoObjects.get(0).geometry.getCoordinates();
        x = coords[0]; // это значение x надо передать дальше
        y = coords[1]; // это значение y надо передать дальше
		
		// Метка 1.
		alert("Коорд х = " + x + "Коорд y = " + y); //  <-- тут сейчас получаем верные желаемые значения
        callback(x,y);
    }
    
);
	// Метка 2.
   x = "59.76";
   y = "30.64";
} 
ymaps.ready(function () {
	
	init(function() {
		alert("Коорд х = " + x + "Коорд y = " + y); //  <-- тут сейчас ТАКЖЕ получаем верные желаемые значения из Метки 1
	});
    var myMap = window.map = new ymaps.Map('YMapsID', {
            center: [x,y], // <- сюда надо передать наши значения x и y из Метки 1. Но мы получаем значения из Метки 2. Что исправить?
            zoom: 9,
            behaviors: ['default', 'scrollZoom']
        });
});
 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.10.2014, 17:18
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.09.2010 
					
					
					
						Сообщений: 8,804
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 И опять ты пытаешься использовать значения, которые еще не успел получить. Ты можешь использовать только те значения, которые у тебя есть на данный момент. Если ты не можешь создать ymaps.Map не получив какие-то значения, то ... гм.. ты не можешь создать ymaps.Map не получив их. Странно, получилась очевидная закономерность. Только почему она не очевидна тебе? 
		
	
		
		
		
		
		
			
				__________________ 
				В личку только с интересными предложениями   
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.10.2014, 17:19
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.09.2010 
					
					
					
						Сообщений: 8,804
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Ты понимаешь термин "асинхронный"? 
		
	
		
		
		
		
		
			
				__________________ 
				В личку только с интересными предложениями   
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				17.10.2014, 17:22
			
			
			
		  
	 | 
 
	
		
		
		
			  | 
			
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 11.09.2010 
					
					
					
						Сообщений: 8,804
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		
	
 
	| 
		
			Сообщение от Stroganov Ilya
			
		
	 | 
 
	| 
		<-- тут сейчас ТАКЖЕ получаем верные желаемые значения из Метки 1
	 | 
 
	
 
 Ну неужели надо много ума, чтобы переместить в это место свой new ymaps.Map() ?  
		
	
		
		
		
		
		
			
				__________________ 
				В личку только с интересными предложениями   
			 
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |