jquery多个ajax检查所有完成?(顺序不重要)

sec*_*ond 4 ajax jquery

有没有一种简洁的方法来确保一堆ajax回调都已完成?它们不需要按顺序执行,我只需要所有数据.

一个想法是让他们都在完成时递增一个计数器并检查counter == countMax,但这看起来很难看.还有同步问题吗?(从同时读/写到计数器)

Nic*_*ver 8

.ajaxStop()方法可用于此,它仅在最后一个当前ajax请求完成时触发.这是完整的描述:

每当Ajax请求完成时,jQuery都会检查是否还有其他未完成的Ajax请求.如果没有,jQuery会触发该ajaxStop事件..ajaxStop()此时已执行已使用该方法注册的所有处理程序.

例如,如果你想运行一些东西,那么文档是一个很好的地方:

$(document).ajaxStop(function() {
  //all requests finished!, do something with all your new fancy data
});
Run Code Online (Sandbox Code Playgroud)

或者你可以在发生这种情况时显示一条消息,如下所示:

$("#ajaxProgressDiv").ajaxStop(function() {
  //display for 2 seconds then fade out
  $(this).text("All done!").delay(2000).fadeOut();
});
Run Code Online (Sandbox Code Playgroud)