Что вам нужно сделать, это связать все ваши запросы с одним основным отложенным объектом и зарегистрировать все ваши обратные вызовы по его обещанию.Основной отложенный объект должен будет прослушивать отдельные запросы и разрешать их соответствующим образом.Самый простой способ добиться этого - определить все отложенные объекты заранее, чтобы избежать проблемы с курицей и яйцом:
var d1 = $.Deferred();
var d2 = $.Deferred();
var def = $.when(d1, d2);
def.done(function() {
alert(1);
});
setTimeout(function() {
d1.resolve();
}, 3000);
def.done(function() {
alert(2);
});
setTimeout(function() {
d2.resolve();
}, 1000);
Скрипка: http://jsfiddle.net/pVVad/
Изменение порядка отложенногоопределения объектов возможны, но это значительно усложнит пример.