Помимо выполнения синхронных вызовов AJAX, если вы можете и считаете это уместным, каков наилучший способ обработки чего-либо подобного?
var A = getDataFromServerWithAJAXCall(whatever);
var B = getDataFromServerWithAJAXCallThatDependsOnPreviousData(A);
var C = getMoreDataFromServerWithAJAXCall(whatever2);
processAllDataAndShowResult(A,B,C);
При условии, что я могу передать обратные вызовы этим функциям, я знаю, что могу использовать замыкания и лямбда-выражения для выполнения работы следующим образом:
var A,B,C;
getDataFromServerWithAJAXCall(whatever, function(AJAXResult) {
A= AJAXResult;
getDataFromServerWithAJAXCallThatDependsOnPreviousData(A, function(AJAXResult2) {
B= AJAXResult2;
processAllDataAndShowResult(A,B,C);
});
});
getMoreDataFromServerWithAJAXCall(whatever2, function(AJAXResult) {
C= AJAXResult;
processAllDataAndShowResult(A,B,C);
});
function processAllDataAndShowResult(A,B,C) {
if(A && B && C) {
//Do stuff
}
}
Но мне это не кажется правильным или достаточно чистым. Так есть ли лучший способ или хотя бы более чистый способ сделать то же самое или просто я не привык к функциональному программированию на javascript?
Кстати, я использую jQuery (1.4.2), если это поможет.
Спасибо.