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() ?
__________________
В личку только с интересными предложениями
|
|
|
|