Javascript 嵌套jQuery$.when
从本质上讲,我想写这篇文章:Javascript 嵌套jQuery$.when,javascript,jquery,jquery-deferred,Javascript,Jquery,Jquery Deferred,从本质上讲,我想写这篇文章: var async1 = $.when( a1() ).then(function(){ a2() }); var async2 = $.when( a3() ).then(function(){ a4() }); $.when(async1, async2).then(function(){ console.log("complete"); }); 但在a1和a3执行时,函数认为自己已解决 我把同一个例子放在一把小提琴里:您从来没有从回调中实际返回
var async1 = $.when( a1() ).then(function(){ a2() });
var async2 = $.when( a3() ).then(function(){ a4() });
$.when(async1, async2).then(function(){
console.log("complete");
});
但在a1和a3执行时,函数认为自己已解决
我把同一个例子放在一把小提琴里:您从来没有从回调中实际返回由
a2()
和a4()
创建的promise对象;这将有效地返回null
,这显然算作$的完成。当
用于以下目的时:
您正在丢弃
a2
和a4
返回的承诺对象,本质上是在时将未定义的
传递回原始,从而使其立即解决:
如果将单个参数传递给jQuery.when,并且该参数不是延迟参数,则它将被视为已解析的延迟参数,并且将立即执行任何附加的doneCallbacks
加上一些回报,它的工作很好
var async1 = $.when(a1()).then(function(){ return a2(); });
var async2 = $.when(a3()).then(function(){ return a4(); });
$.when(async1, async2).then(function(){
console.log("complete");
});
你希望什么时候解决这些问题?@ExplosionPills当a1、a2、a3和a4都解决后,我希望最终解决的时间是什么时候。如果你跟着?只是猜测。。。如果你把它改成这个会发生什么<代码>$.when(a1().then(function(){a2()}))代码>@ChrisFrancis确实有效,但爆炸药丸已经解决了