Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/415.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/72.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_Ajax - Fatal编程技术网

Javascript jQuery.when:如果一个函数失败怎么办?

Javascript jQuery.when:如果一个函数失败怎么办?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有下一个javascript函数,它执行四个ajax函数,之后,如果它们的状态都是200则继续执行一个新调用 我想知道如果这四个AJAX调用中的一个失败了,jQuery.done中的调用也会被执行,会发生什么 $.when( ajax1(), ajax2(), ajax3(), ajax4()) .done(function(a1, a2, a3, a4) { if(a1[2].status === 200 && a2[2].status

我有下一个javascript函数,它执行四个ajax函数,之后,如果它们的状态都是
200
则继续执行一个新调用

我想知道如果这四个AJAX调用中的一个失败了,jQuery.done中的调用也会被执行,会发生什么

$.when(
   ajax1(), 
   ajax2(), 
   ajax3(), 
   ajax4())
 .done(function(a1, a2, a3, a4) {
    if(a1[2].status === 200 && a2[2].status === 200 && 
       a3[2].status === 200 && a4[2].status === 200) {
        $.ajax({
            method: "POST",
            url: "/whatever",
            data: { 
                var1: a1[2].responseText,
                var2: a2[2].responseText,
                var3: a3[2].responseText,
                var4: a4[2].responseText
            },
            success: function(){
                alert("Success");
            }
        });
    } else {
        alert("Error");
    }
}
});

谢谢。

来自文档:

在多次延迟的情况下,其中一个延迟被拒绝,jQuery.when()会立即为其主延迟发出故障回调


真遗憾,我没有在文件上看到这一点。谢谢你,罗瑞!没问题,很乐意帮忙。如果我没弄错你的问题;您可以将错误的url传递给其中一个ajax调用并查看结果。我认为最好在有机会的时候自己查看结果。如果ajax函数失败并且没有返回200状态代码,那么每个ajax函数都应该失败,并且您的
警报
代码应该位于
.fail()
函数中。