完成ajax调用后继续在js程序中

时间:2015-08-30 19:27:19

标签: javascript jquery ajax

我有一个带有3个ajax调用的函数

var loadEditModalAddressData(){
     loadCountries();
     loadStates();
     loadDistricts();
};

我想从js等待,直到所有的ajax调用完成。

我的部分代码

loadEditModalAddressData();
$(document).ajaxStop(function(){
// functionality using requested data 
....
}

这很好用,直到我添加了额外的功能,并发现在每个完整的请求(或一堆请求)之后调用 $(document).ajaxStop ,而不仅仅是在某个函数范围内,混搭我的代码功能。

我该怎么做?

2 个答案:

答案 0 :(得分:3)

肮脏的方式可能是使用ajaxStop中的计数器来确保所有三个调用都已返回。稍微好一点的方法是为每个呼叫添加回调,并在收到最后一个呼叫时启动处理。

然而,最好的方法可能是使用承诺。 如果您使用jQuery来进行调用,您可以执行以下操作:

$.when(call1, call2, call3).then(function(results){
     // your stuffs
});

callX返回$.get(或任何其他jQuery承诺)的地方。

看看here

答案 1 :(得分:1)

使用$.when等待多个deferreds / promises。它与原生Promise.all()同义。