所有ajax调用完成后的事件

Tru*_*ran 5 javascript ajax jquery events

我有一个触发 3 个 ajax 调用的点击事件:

$("#button").click(function(e) {
    e.preventDefault();

    $.ajax(call1);
    $.ajax(call2);
    $.ajax(call3);

    some_function() //should fire off AFTER all ajax calls are complete
});
Run Code Online (Sandbox Code Playgroud)

有没有办法让我在触发我的some_function()函数之前确认所有 ajax 调用都被触发了?

提前致谢!

Mat*_*ero 4

您可以使用$.when

提供一种基于一个或多个对象(通常是表示异步事件的延迟对象)执行回调函数的方法。

$.when($.ajax(call1), $.ajax(call2), $.ajax(call3))
.done(function () {
     some_function();
});
Run Code Online (Sandbox Code Playgroud)

如果(由于某种原因)您有一系列 Promise,那么您可以使用Function.prototype.apply()调用此方法:

$.when.apply($, ajaxArray)
.done(function () {
   some_function();
});
Run Code Online (Sandbox Code Playgroud)