Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 嵌套jQuery$.when_Javascript_Jquery_Jquery Deferred - Fatal编程技术网

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确实有效,但爆炸药丸已经解决了