Показать сообщение отдельно
  #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)
Ответить с цитированием