Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.09.2011, 18:13
Новичок на форуме
Отправить личное сообщение для huston007 Посмотреть профиль Найти все сообщения от huston007
 
Регистрация: 05.09.2011
Сообщений: 3

Видимость переменных родителя из потомка
Имеется функция для сокращения URL, создающая потомок, загружающая туда скрипт и обрабатывающая ответ от сервера, насколько я понимаю. Проблема в том, что я не могу вернуть сокращённый URL из коллбэк функции my_callback. Как сделать, чтобы функция shortURL возвращала сокращённый URL, получаемый функцией my_callback?

function shortURL(url)
	{
	var shorted="none";
	  window.my_callback = function(response)
	  {
		if(response.error_message)
		{
		  console.info("An error occured: " + response.error_message);
		}
		else
		{
		  shorted = response.short_url;
		  console.info(shorted); //здесь выведет сокращенную ссылку
		}
	  };
	  var s = document.createElement("script");
	  s.setAttribute("src", "http://ggl-shortener.appspot.com/?url=" +   encodeURIComponent(url) + "&jsonp=my_callback");
	  document.body.appendChild(s); 
		
	  console.info(shorted); //здесь выведет "none"
	}

Скрипт взят отсюда http://ggl-shortener.appspot.com/instructions/

Последний раз редактировалось huston007, 05.09.2011 в 18:19. Причина: добавил пруфлинк
Ответить с цитированием
  #2 (permalink)  
Старый 05.09.2011, 18:18
Аватар для Snipe
Профессор
Отправить личное сообщение для Snipe Посмотреть профиль Найти все сообщения от Snipe
 
Регистрация: 06.05.2008
Сообщений: 765

Эм. Если я правильно понимаю, у вас тут асинхронность. return в shortURL не прокатит, потому что window.my_callback выполняется после создания и загрузки скрипта, т.е. shortURL к тому времени уже завершит свое выполнение.
Вам callback'и помогут...
Ответить с цитированием
  #3 (permalink)  
Старый 05.09.2011, 18:25
Новичок на форуме
Отправить личное сообщение для huston007 Посмотреть профиль Найти все сообщения от huston007
 
Регистрация: 05.09.2011
Сообщений: 3

Сообщение от Snipe Посмотреть сообщение
Эм. Если я правильно понимаю, у вас тут асинхронность. return в shortURL не прокатит, потому что window.my_callback выполняется после создания и загрузки скрипта, т.е. shortURL к тому времени уже завершит свое выполнение.
Вам callback'и помогут...
Да, тут асинхронность. Но куда конкретно ткнуть ещё один callback?
Ответить с цитированием
  #4 (permalink)  
Старый 05.09.2011, 18:39
Аватар для walik
Профессор
Отправить личное сообщение для walik Посмотреть профиль Найти все сообщения от walik
 
Регистрация: 09.11.2009
Сообщений: 1,101

Так в callback'е и делайте то что вам нужно с ссылкой. На то он и callback что бы обработать ответ.
__________________
"Всегда пишите код так, будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете."
Мой сертификат :-D клацай
Ответить с цитированием
  #5 (permalink)  
Старый 05.09.2011, 18:49
Новичок на форуме
Отправить личное сообщение для huston007 Посмотреть профиль Найти все сообщения от huston007
 
Регистрация: 05.09.2011
Сообщений: 3

Сообщение от walik Посмотреть сообщение
Так в callback'е и делайте то что вам нужно с ссылкой. На то он и callback что бы обработать ответ.
Пришло прозрение) Строка 20 отрабатывает раньше строки 13. Спасибо)
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Видимость переменных Bess Общие вопросы Javascript 4 24.04.2011 15:06
Видимость переменных в классе Л_Денис Общие вопросы Javascript 1 15.04.2010 12:37
Модуль и видимость переменных bobroff jQuery 2 04.12.2009 12:58
Видимость переменных в jQuery Zeboton jQuery 9 10.03.2009 18:28
Видимость переменных HelpeR Общие вопросы Javascript 6 21.02.2009 21:29