怎么检测$.get是否获取完信息,再执行下一步
jQuery怎么检测$.get读取接口的数据是否缓存完,缓存完再执行下一条指令怎么做?
我想做个打票机系统,他是连接自己写的接口方法,先获取订单后再把订单截去分隔符,再循环给下一个$.get方法有多少条订单就循环多少个$.get方法来获取详细订单信息。
问题在于,他由于没有返回完全部订单号就执行了下列方法,查询详细订单信息顺序就错乱了,有什么办法检测他是否完全返回所有信息再执行下一条?
function load() {
alert('查询成功');
$("#table1_2_3").append("<table id='table' style='font-size:14px;margin:0 auto;'></table>");
var stime = document.getElementById("stime").value;
var etime = document.getElementById("etime").value;
var rid = document.getElementById("rid").value;
var tag = document.getElementById("tag").value;
$.get({
type: "GET",
url: "这是接口",
dataType: "text",
success: function(data) {
data = data.substr(2, data.length - 2);
data = data.substr(0, data.length - 2);
var data = data.split('|*');
var dArr = new Array;
//查询订单号
for (var i = 0; i < data.length; i++) {
dArr[i] = data[i];
}
console.log(i);
//查询订单详细信息
for(var j = 0; j < dArr.length; j++){
var dingdanhao = dArr[j];
$.get({
type: "get",
url: "这是接口",
success: function(data1) {
var result = data1.split('|*');
for(var k = 0; k < result.length; k++){
}
console.log(data1);
}
},{id: dingdanhao,tag: "0"});
}
}
},{stime: stime,etime: etime,rid: rid,tag: tag,});
};
针对此需求,你有3种解决方案:
使用ajax的「同步」模式
这绝对是按照先后顺序执行的
使用jQuery的Deferred对象
比如必须等待3个ajax请求完毕,才能执行下一个步骤
当然了,大部分都是循环来弄的,于是我们可以这样
使用邪恶金字塔(Pyramid of Doom)
看你哪个能理解就用哪个吧,以上代码都是伪代码,需要自己修改后运行