您需要做的是将您的所有请求链接到一个主延迟对象,并根据其承诺注册所有回调。延迟的主对象将需要侦听各个请求并相应地解决。实现此目的的最简单方法是预先定义所有延迟的对象,以避免出现鸡肉和鸡蛋问题:
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/
更改延迟对象定义的顺序是可能的,但这会使示例更加复杂。



