jQuery怎么检测$.get读取接口的数据是否缓存完,缓存完再执行下一条指令怎么做?
高洛峰
高洛峰 2016-11-12 09:50:22
0
2
652

怎么检测$.get是否获取完信息,再执行下一步

jQuery怎么检测$.get读取接口的数据是否缓存完,缓存完再执行下一条指令怎么做?

我想做个打票机系统,他是连接自己写的接口方法,先获取订单后再把订单截去分隔符,再循环给下一个$.get方法有多少条订单就循环多少个$.get方法来获取详细订单信息。

问题在于,他由于没有返回完全部订单号就执行了下列方法,查询详细订单信息顺序就错乱了,有什么办法检测他是否完全返回所有信息再执行下一条?

function load() { alert('查询成功'); $("#table1_2_3").append("
"); 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,}); };


高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

répondre à tous (2)
学霸

var lock = false;if(lock==false)(

lock = true; $.get("demo_test.html",function(data,status){ if(status == 'success'){ lock = false;

⋯⋯
⋯⋯
⋯⋯

} });

)

手机写的,希望你能看懂吧


    三叔

    针对此需求,你有3种解决方案:

    使用ajax的「同步」模式

    $.ajax({ url: 'url1' async: false, }); $.ajax({ url: 'url2' async: false, });

    这绝对是按照先后顺序执行的

    使用jQuery的Deferred对象

    比如必须等待3个ajax请求完毕,才能执行下一个步骤

    jQuery.when( $.ajax({ url: 'url1' }), $.ajax({ url: 'url2' }), $.ajax({ url: 'url3' }) ).done(function(data1, data2, data3){ 全部请求完毕了, });

    当然了,大部分都是循环来弄的,于是我们可以这样

    var ajaxs = []; for(var i = 0; i

    使用邪恶金字塔(Pyramid of Doom)

    var urls = [ 'url1', 'url2', 'url3' ], datas = []; var currentIndex = -1; var successCallback = function(data) { if (data !== false) datas.push(data); if (++currentIndex >= urls.length) //已经循环完毕 { // 已经做完了, 需要接下来干嘛? // datas return false; } $.ajax({ url: urls[currentIndex], success: successCallback, }); } //第一次时 手动调用 successCallback(false);

    看你哪个能理解就用哪个吧,以上代码都是伪代码,需要自己修改后运行

      Derniers téléchargements
      Plus>
      effets Web
      Code source du site Web
      Matériel du site Web
      Modèle frontal
      À propos de nous Clause de non-responsabilité Sitemap
      Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!