Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 11.07.2009, 20:01
AntonE
 
Сообщений: n/a

Проблема асинхроности
Здраствуйте.
Подскажите, пожалуйста, вот если мы посылаем асинхронный запрос, то остальной код дальше выполняется и не ждет ответа - ведь на то он и асинхронный, но как в таком случае быть, если нужно дождаться ответа?
Сразу хочу добавить: синхронный запрос я не могу послать, т.к. это гуглевская функция и по докам я не нашел, чтобы можно было включить синхронный вызов; и мне нужен именно асинхронный запрос, т.к. пока ответ не пришел, у меня еще загружаются другие данные.
По началу я сделал примерно так:
// создаем новый объект и запрашиваем асинх. запросом xml-данные
var street = new Street.load('data.xml')
// дальше выполняем необходимые настройки
// в функции init запускается setInterval, который проверяет,
// загрузились ли xml-данные, и когда все ок,
// выполняем запуск функции, которая передана
street.init(function() {
  // выполняем безопасно тут код, т.к. все данные уже загружены
});

Это работает, но не удобно и не подходит.
Можно ли как-нибудь работать в таком духе? (не боясь, что данные не подгрузились):
var obj = new Obj();
var street = new Street.load('street.xml')
obj.addOverlay(street.get(['Ленина', 'Строителей', 'Урицкого']))
var home = new Home.load('home.xml')
obj.addOverlay(home.get({ 'Труда': [11, 23, 46] }))
var area = new Area.load('area.xml')
obj.addOverlay(area.get(['network', 'tv']))

Или единственный путь - синхронные запросы? (в данном случае на загрузку xml)
Ответить с цитированием
  #2 (permalink)  
Старый 12.07.2009, 13:27
AntonE
 
Сообщений: n/a

Никто не поможет? Или не понятно про что я спрашиваю?
Ответить с цитированием
  #3 (permalink)  
Старый 12.07.2009, 14:45
Профессор
Отправить личное сообщение для Dmitry A. Soshnikov Посмотреть профиль Найти все сообщения от Dmitry A. Soshnikov
 
Регистрация: 25.02.2008
Сообщений: 707

В каждой асинхронной системе, должна действовать система callback'ов (функций обратного вызова, которые определяются и передаются параметром в асинхронный вызов; далее, эта функция вызовется в нужный момент). Другим способом может быть система нотификаций событий - подписываетесь на нужное событие, а система, которая рассылает эти события, сообщит Вам об этом в нужное время.

Посмотрите подробней документацию по объектам которые Вы используете. Я думаю, система callback'ов там должна быть (например, в методах .load).
__________________
Тонкости ECMAScript
Ответить с цитированием
  #4 (permalink)  
Старый 15.07.2009, 05:56
Аспирант
Отправить личное сообщение для gosha_kap Посмотреть профиль Найти все сообщения от gosha_kap
 
Регистрация: 03.07.2009
Сообщений: 41

А что если попробовать через объект XMLHTTPRequest делать асинхронный запрос
Ответить с цитированием
  #5 (permalink)  
Старый 15.07.2009, 06:38
Аватар для Riim
Рассеянный профессор
Отправить личное сообщение для Riim Посмотреть профиль Найти все сообщения от Riim
 
Регистрация: 06.04.2009
Сообщений: 2,379

Сообщение от gosha_kap
А что если попробовать через объект XMLHTTPRequest делать асинхронный запрос
Там так и делается.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проблема с сабмит mapt Events/DOM/Window 1 15.06.2009 13:45
Проблема спама lliberty AJAX и COMET 1 12.03.2009 16:47
проблема с обработкой DIV nerik AJAX и COMET 2 22.08.2008 17:40
Проблема с маркером kostian02 Общие вопросы Javascript 0 23.06.2008 16:10
проблема с передачей русского текста в Prototype subaru Prototype & script.aculo.us 2 26.07.2007 16:56