jQuery:如何在所有异步调用返回时触发事件?

Jer*_*emy 1 javascript jquery events asynchronous

我有一个jQuery应用程序,它从五个异步服务器调用加载数据.在所有五个调用返回之前,我不想显示任何数据.(我计划显示加载消息,直到发生这种情况.)

如何检测所有五个呼叫何时返回?我考虑过让每个回调方法增加一个变量(也许使用jQuery的data()方法)然后等待值变为5.(我不确定我将如何监听该事件.)我不认为这是但是,一个非常好的解决方案.如果两个呼叫同时返回会发生什么?

有一个更好的方法吗?

Nic*_*ver 8

如果您已经在使用jQuery进行AJAX调用,那么您可以使用$.ajaxStop()它,它会在所有当前调用返回时触发,您可以像这样使用它:

$("#loading").ajaxStop(function() {
  $(this).fadeOut();
});
Run Code Online (Sandbox Code Playgroud)

.click()与其仅仅是一个事件的情况并没有什么不同,ajaxStop如果您愿意,您可以自己使用该事件,如下所示:

$("#loading").bind('ajaxStop', function() {
  $(this).fadeOut();
});
Run Code Online (Sandbox Code Playgroud)