基本上我是想写这个:
var async1 = $.when( a1() ).then(function(){ a2() }); var async2 = $.when( a3() ).then(function(){ a4() }); $.when(async1,async2).then(function(){ console.log("complete"); });
我把一个相同的例子放在一个小提琴中:http://jsfiddle.net/Z7fzR/
解决方法
你永远不会从回调中实际返回由a2()和a4()创建的promise对象;这有效地返回null,这显然被视为$.目的的完成: