jquery ajax:所有请求完成后调用函数
我在页面上有两个并发的ajax调用。 我希望在两个函数完成(并且成功)时调用函数。
效率低下的解决方案:
- 制作ajax电话A.
- 如果呼叫成功,请拨打电话B.
- 在呼叫B成功时,调用该function
不幸的是,这打破了并发性。
我能以其他任何方式达到同样的效果吗?
看看我前几天给出的几乎相同的问题的答案 ,还看看我创建的演示与它一起(在该页面上查看源代码以查看完整代码)。 它使用JavaScript的固有function和整体性质作为一种语言比使用标志变量,恕我直言;恕不另行;
$(document).ajaxStop(function() { //do your JQuery stuff; });
var isASuccessful = false; var isBSuccessful = false; function callARequest() { $.get("path/to/url", { params: list }, function() { isASuccessful = true; if (isBSuccessful) { callMeAfterAandB(); } else { callBRequest(); } }); } function callBRequest() { $.get("path/to/other/url", { params: list }, function() { isBSuccessful = true; if (isASuccessful) { callMeAfterAandB(); } else { callARequest(); } }); } function callMeAfterAandB() { // todo: something }
设置全局变量ajax_call_A_complete设置另一个全局变量ajax_call_B_complete将这两个变量设置为false
没有同时进行ajax调用。 在成功回调两个ajax调用时,将varialbes设置为true。 我的意思是ajax调用A会将ajax_call_A_complete设置为true,而ajax调用B会将varialbe ajax_call_B_complete设置为true。
设置一个周期时间,每隔2秒检查这两个变量的值。 当两个变量都为真时,关闭您的依赖任务。