有没有一种简洁的方法来确保一堆ajax回调都已完成?它们不需要按顺序执行,我只需要所有数据.
一个想法是让他们都在完成时递增一个计数器并检查counter == countMax,但这看起来很难看.还有同步问题吗?(从同时读/写到计数器)
该.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)
| 归档时间: |
|
| 查看次数: |
4233 次 |
| 最近记录: |