Всем доброго времени суток!
Как известно, применение синхронных запросов нежелательно. Но вот что делать, если информацию нужно получить "вложенно". То есть для того, чтобы выдать инфу, нужно сделать последовательные запросы к серверу.
Например (хардкор конечно, но):
var user = {
country: 1,
region: 2,
city: 5
};
Запрос А = запрашиваем пользователя, получаем айди страны, региона, города
Запрос В = запрашиваем страну по айди, получаем айди областей
Запрос С = запрашиваем область по айди, получаем айди городов
Запрос D = запрашиваем город по айди, и получаем наконец название города...
Т.к. используем AJAX (А), то запросы посылаются синхронно с проходом компилятора (К), но К не дожидается пока А вернет что-то. В итоге код вида
var Adress = function(countryId, regionId, cityId){
var adr = {};
var gCr = AJAX.getCountries();
adr.country = gCr[countryId].name;
var gRg = AJAX.getRegionInCountry(countryId);
adr.region = gRg[regionId].name;
var gCt = AJAX.getCityInRegion(regionId);
adr.city = gCt[cityId].name;
return adr;
};
var U_adress = new Adress(user.country, user.region, user.city);
var string = "Пользователь проживает по адресу" + U_adress.country + U_adress.region + U_adress.city;
вообще неуместен, т.к на выходе по понятным причинам получим
Польз. пр. по адресу undefined undefined undefined.
При использовании колбеков, которые как раз таки применяются для такого
AJAX.getCountries(function () {
///...
var gRg = AJAX.getRegionInCountry(countryId, function () {
///...
var gCt = AJAX.getCityInRegion(regionId, function () {
///...
})
})
});
не получается вернуть результат в родительскую ф-цию, не знаю даже почему, наверно, коллбек просто завершает себя в никуда. В итоге на выходе снова получаем
Польз. пр. по адресу undefined undefined undefined
Вопрос, уважаемые знатоки: Как заставить этот AJAX сделать вложенные (последовательныe) запросы, когда для одного запроса нужно сделать сначала другой, а для другого сначала третий и т.д ?