jQuery.when:如果一个函数失败会发生什么?

时间:2015-11-26 12:53:53

标签: javascript jquery ajax

我有下一个执行四个ajax函数的javascript函数,如果它们具有所有状态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");
    }
}
});

谢谢。

1 个答案:

答案 0 :(得分:2)

来自文档:

  

在多个Deferreds案例中,其中一个Deferreds被拒绝,jQuery.when()会立即触发其主Deferred的failCallbacks

http://api.jquery.com/jQuery.when/