Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.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 延迟。总是()过早触发_Javascript_Jquery - Fatal编程技术网

Javascript 延迟。总是()过早触发

Javascript 延迟。总是()过早触发,javascript,jquery,Javascript,Jquery,结果(控制台): 为什么不推迟。总是()等待两个ajax调用完成?是否有任何延迟回调可以在所有请求完成时使用,而不管它们的状态如何 当(…)在所有问题都得到解决时,或在任何问题被拒绝时,将触发其回调 由于第二个AJAX调用会导致错误,因此无论第一个AJAX调用是否成功,只要第二个AJAX调用发生错误,.when().always()就会发生 对于您的场景,我知道的唯一解决方案是为每个AJAX请求保留第二个$。延迟,然后解决每个AJAX请求的始终处理程序中的问题。然后在$中使用这些延迟。当调用时:

结果(控制台):

为什么不推迟。总是()等待两个ajax调用完成?是否有任何延迟回调可以在所有请求完成时使用,而不管它们的状态如何

当(…)在所有
问题都得到解决时,或在任何
问题被拒绝时,
将触发其回调

由于第二个AJAX调用会导致错误,因此无论第一个AJAX调用是否成功,只要第二个AJAX调用发生错误,
.when().always()
就会发生

对于您的场景,我知道的唯一解决方案是为每个AJAX请求保留第二个
$。延迟
,然后
解决每个AJAX请求的
始终
处理程序中的
问题。然后在
$中使用这些延迟。当调用时:

xhr2 always
xhr1 & xhr2 always
xhr1 always 
.when(…)
将在所有
问题得到解决时,或在任何
问题被拒绝时,触发其回调

由于第二个AJAX调用会导致错误,因此无论第一个AJAX调用是否成功,只要第二个AJAX调用发生错误,
.when().always()
就会发生

对于您的场景,我知道的唯一解决方案是为每个AJAX请求保留第二个
$。延迟
,然后
解决每个AJAX请求的
始终
处理程序中的
问题。然后在
$中使用这些延迟。当调用时:

xhr2 always
xhr1 & xhr2 always
xhr1 always 

您已经在使用
.when()
,只需将
.then()
添加到其中,您就应该有办法等待所有响应。@DevlshOne我相信只有在两个调用都成功的情况下才会调用
then()
。这是正确的。你是说即使调用失败,OP也希望得到结果吗?@DevlshOne是的,这就是他想要的。你已经在使用
。当()
时,只需将
。然后()
添加到其中,你应该有办法等待所有的响应。@DevlshOne我相信只有在两个调用都成功的情况下才会调用
然后()
。这是正确的。你是说即使调用失败,OP也希望得到结果?@DevlshOne是的,这就是他想要的。那么,有没有办法进行同步回调?那么,有没有办法进行同步回调?
var def1 = $.Deferred();
xhr1.always(def1.resolve);

var def2 = $.Deferred();
xhr2.always(def2.resolve);

$.when(def1, def2).done(function() {
    // only called when the two XHRs complete, whether
    // they succeeded or not
});