Javascript 如何知道来自特定函数的所有AJAX调用何时完成?

Javascript 如何知道来自特定函数的所有AJAX调用何时完成?,javascript,jquery,ajax,Javascript,Jquery,Ajax,我有一个函数,它有许多不同的函数调用,内部有许多ajax调用。如何知道由$(“#save”).click(…)触发的所有ajax调用是否已完成 $("#save").click(function() { saveUpdateSeatDetails(); markAbsent(); setTimeout(function() { location.reload(); }, 369); }); 我试着使用async:false,但我发现它不推荐使

我有一个函数,它有许多不同的函数调用,内部有许多ajax调用。如何知道由
$(“#save”).click(…)
触发的所有ajax调用是否已完成

$("#save").click(function() {

    saveUpdateSeatDetails();
    markAbsent();

    setTimeout(function() {
        location.reload();
    }, 369);
});
我试着使用
async:false
,但我发现它不推荐使用

我还提到。但是,这适用于整个页面。我希望这只适用于特定的函数

(无ES6)

您应该使用jQuery(略有不同,但基本上与承诺兼容),它由
$.ajax
调用返回。我假设您在这里使用的是
$.ajax
,因为您在回答中使用了jQuery

您需要更新函数以返回
$。ajax
调用:

function saveUpdateSeatDetails() {
    return $.ajax("http://example.com...");
}

function markAbsent() {
    return $.ajax("http://example.com...");
}
然后你可以做:

$("#save").click(function() {
    $.when(saveUpdateSeatDetails(), markAbsent()).done(function() {
         alert("test")
    });
});
$。当执行函数之前等待Ajax请求完成时


由于这是jQuery 1.5+的一部分,因此任何与jQuery兼容的浏览器都可以运行此代码(不需要ES6)。

也许您不必使用Promissions,但如果您希望代码易于阅读和维护,您确实应该使用Promissions。这就像承诺一样简单。所有的
,如果你想为那些可能不支持承诺的客户服务,这就是polyfills的用途。非常感谢你的重复。我会试试这个让你知道你好,我试过你的解决方案。但是有一个问题,最后一个函数有'location.reload();`不明白executed@Richard-您还可以使用它将值从Ajax函数返回到变量吗?@therailslearner非常抱歉,我的原始代码中有一个错误,它已被修复。@vibs2006您传递到
.done
的函数将把$.Ajax调用中解析的延迟值作为参数传递给它。所以第一个结果将是第一个参数,第二个将是第二个参数,等等。