Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 14.11.2013, 10:02
Интересующийся
Отправить личное сообщение для fluffyMan2000 Посмотреть профиль Найти все сообщения от fluffyMan2000
 
Регистрация: 13.11.2013
Сообщений: 11

Сообщение от a_l Посмотреть сообщение
fluffyMan2000, ошибка в том, что вы пытаетесь работать с ассинхронными методами как с синхронными. Почитайте про ассинхронность js и всё встанет на свои места.
то есть когда я возвращаю значение из функции, то его еще нет, так как асинхронная функция-замыкание не отработала и не присвоила нужное значение? ясно. спасибо. буду думать дальше как это все связать
Ответить с цитированием
  #12 (permalink)  
Старый 14.11.2013, 11:18
Интересующийся
Отправить личное сообщение для fluffyMan2000 Посмотреть профиль Найти все сообщения от fluffyMan2000
 
Регистрация: 13.11.2013
Сообщений: 11

Сообщение от Rise Посмотреть сообщение
Ну и производите в callback нужные вам действия с переменной в чем проблема
проблема была в том, что действия надо было произвести не в js, а в с++ программе, вызвавшей js скрипт. в общем, проблема решена. как было сказано выше, я не учитывал то, что функция работает асинхронно. поэтому когда я возвращал значение из getAddressByCoordinates(), то переменной не было присвоено значение, так как асинхронная функция ничего не присвоила переменной еще. она присвоит потом, когда уже будет вызван return.

в общем решилось все высылкой сигнала с нужным параметром-фдресом (в Qt есть такая полезная вещь) из асинхронной функции в с++ программу.

function getAddressByCoordinates(lat, lon, pointId)
{	 		
    ymaps.geocode([lat, lon]).then(function (res) 
    {
        var names = [];

        res.geoObjects.each(function (obj) 
	{
             names.push(obj.properties.get('name'));
        });
					
	jsObject.address(names.reverse().join(', '), pointId);
    });		
}


где jsObject - Qt/c++ объект с сигналом void address(QString address, int pointId)
Ответить с цитированием
  #13 (permalink)  
Старый 14.11.2013, 11:20
Интересующийся
Отправить личное сообщение для fluffyMan2000 Посмотреть профиль Найти все сообщения от fluffyMan2000
 
Регистрация: 13.11.2013
Сообщений: 11

проблема была в том, что действия надо было произвести не в js, а в с++ программе, вызвавшей js скрипт. в общем, проблема решена. как было сказано выше, я не учитывал то, что функция работает асинхронно. поэтому когда я возвращал значение из getAddressByCoordinates(), то переменной не было присвоено значение, так как асинхронная функция ничего не присвоила переменной еще. она присвоит потом, когда уже будет вызван return.

в общем решилось все высылкой сигнала с нужным параметром-адресом (в Qt есть такая полезная вещь) из асинхронной функции в с++ программу.

function getAddressByCoordinates(lat, lon, pointId)
{	 		
    ymaps.geocode([lat, lon]).then(function (res) 
    {
        var names = [];

        res.geoObjects.each(function (obj) 
	{
             names.push(obj.properties.get('name'));
        });
					
	jsObject.address(names.reverse().join(', '), pointId);
    });		
}


где jsObject - Qt/c++ объект с сигналом void address(QString address, int pointId)
Ответить с цитированием
  #14 (permalink)  
Старый 14.11.2013, 11:21
Интересующийся
Отправить личное сообщение для fluffyMan2000 Посмотреть профиль Найти все сообщения от fluffyMan2000
 
Регистрация: 13.11.2013
Сообщений: 11

jsru_, a_l, Rise, спасибо за помощь.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен календарь на javascript. Где взять? javascript_pupil Общие вопросы Javascript 8 07.10.2011 18:34
подскажите где ошибка пожалуйста satyr22 Javascript под браузер 2 24.08.2011 11:00
Где вызывается функция? cradis Общие вопросы Javascript 5 23.04.2011 13:47
Подскажите где найти нужный материал. Yoksven Общие вопросы Javascript 7 18.06.2010 02:48
Функция не возвращает false, почему? Vitaly jQuery 3 05.07.2009 16:05