怎么检测$.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,}); };
var lock = false;if(lock==false)(
⋯⋯
⋯⋯
⋯⋯
)
手机写的,希望你能看懂吧
针对此需求,你有3种解决方案:
使用ajax的「同步」模式
这绝对是按照先后顺序执行的
使用jQuery的Deferred对象
比如必须等待3个ajax请求完毕,才能执行下一个步骤
当然了,大部分都是循环来弄的,于是我们可以这样