鍍金池/ 問答/Java  數(shù)據(jù)庫  HTML/ 有一個(gè)ajax請求需要在三個(gè)ajax請求之后發(fā)起,其中之前的三個(gè)ajax可以并行

有一個(gè)ajax請求需要在三個(gè)ajax請求之后發(fā)起,其中之前的三個(gè)ajax可以并行,如何優(yōu)雅的實(shí)現(xiàn)這種寫法?

我有一個(gè)接口,需要在三個(gè)接口都調(diào)用成功之后執(zhí)行,不知道怎么寫

回答
編輯回答
凝雅

$.when , jQuery 的 API 。

2017年8月9日 06:30
編輯回答
放開她

dasdasssssssssssssssssssssssssssssssssssssssssssssssssssss

2017年4月5日 04:27
編輯回答
近義詞

如用了jQuery 1.6+,可以用jQuery延遲函數(shù)

$.when($.get('/a'),$.get('/b'),$.get('/c')).then(function(a,b,c){
    return $.get('/d',{a:a,b:b,c:c})
}).then(function(d){
    console.log(d)
})

如果不考慮兼容或已引用polyfill,則建議用Promise

// ajax_X 是一個(gè)返回promise對像的函數(shù),jQuery 延遲對像也是可以的
Promise.all([ajax_a(),ajax_b(),ajax_c()])
    .then(([a,b,c])=>ajax_d({a,b,c}))
    .then(d=>console.log(d))
2017年12月8日 18:54
編輯回答
久舊酒

用promise.all就可以了

2017年6月2日 06:47
編輯回答
陌如玉

用promise呀

    function ajax(mode,url,data){
        return new Promise(function(resolve,reject){
            var request = new XMLHttpRequest();
            request.open(mode,url,true);
            console.log(postDataFormat(data))
            request.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");                
            request.send(postDataFormat(data));
                request.onload  = function(){
                    if((this.status >= 200 && this.status < 300) || this.status == 304){
                        resolve(this);
                    }else{
                        reject(this);
                    };
                };
        })
    }
    function postDataFormat(obj){
      if(typeof obj != "object" ) {
          alert("輸入的參數(shù)必須是對象");
          return;
      }
          var arr = new Array();
          var i = 0;
          for(var attr in obj) {
              arr[i] = encodeURIComponent(attr) + "=" + encodeURIComponent(obj[attr]);
              i++;
          }
          return arr.join("&");
    }
  // 用并行
    Promise.all([ajax('POST','./1.php',{aaa:"aaa",bbb:"bbb"}),ajax('POST','./1.php',{aaa:"aaa1",bbb:"bbb1"})]).then(function(allres){
    console.log(allres);//三個(gè)請求的返回的集合
     ajax('POST','./1.php',{XXXX}).then();
        
    })
2018年9月13日 05:35