如何等待JQuery异步全部完成,再执行查询
1.功能描述:用jquery进来初始化多个查询条件,比如日期(默认当前日期),省与地市(默认省会城市)等很多条件后,等这些条件全部加载完成后再执行查询,然后页面展示查询结果。
2.发现问题:因为jquery的异步性,导致初始化的条件还没有加载完成(包括省市联动等),就直接执行了查询操作,导致查询的结果有问题。
3.需求方案:如何等待所有异步的初始化条件全部加载完成后,再执行查询。
[解决办法]
以1.8版本以后的为例:
function init() {
var responseDatas = [];
$.ajax({url:url1,dataType:'json'})
.then(function(data){
responseDatas.push(data);
})
.then($.ajax({url:url2,dataType:'json'}))
.then(function(data){
responseDatas.push(data);
})
.then($.ajax({url:url3,dataType:'json'}))
.done(function(data){
responseDatas.push(data);
dealWithResponseDatas(responseDatas);
});
}
这个回去试试,但是想问下,“.then”这个是执行异步还是同步的?
举个例子说明吧,想要(A异步,B异步,C异步)完成后,执行(D)。ABC之间顺序无所谓,但是D一定要等ABC三个全部完成
var data1, data2;
var request1 = $.get(url1);
var request2 = $.get(url2);
request1.done(function(data){data1 = data;});
request2.done(function(data){data2 = data;});
$.when(request1,request2).done(function(){
console.log(data1,data2);
});;