Одна вещь, которую вы можете сделать, это включить порядковый номер в каждый запрос (и ответ) и использовать один и тот же обработчик обратного вызова для каждого вызова AJAX. Таким образом, ваш обработчик обратного вызова может проверить возвращаемый порядковый номер и управлять порядком выполнения обратных вызовов.
т.е. что-то вроде:
каждый запрос AJAX будет выглядеть как /getUsers?seq=1&...
, /getProps?seq=2&...
и т. Д.
каждый ответ AJAX (при условии, что здесь JSON) будет возвращать полученный результат с запросом, т.е.
result {
seq: 2,
data: ...
}
тогда ваш обработчик обратного вызова будет выглядеть примерно так:
var responseQ = [];
function handler(response) {
// .. code to push the response into the responseQ in increasing order of seq num ..
}
и вы можете запускать обработчик очереди каждые N секунд, который проверяет наличие ожидающих ответов в Q и обрабатывает их соответствующим образом.
т.е. что-то вроде:
setInterval(function() {
// get last item from responseQ
// check its seq num
// execute if appropriate
}, 10000);