有一个ajax请求需要在三个ajax请求之后发起,其中之前的三个ajax可以并行,如何优雅的实现这种写法?

发布于 2022-09-06 10:24:38 字数 37 浏览 17 评论 0

我有一个接口,需要在三个接口都调用成功之后执行,不知道怎么写

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

述情 2022-09-13 10:24:38

用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("输入的参数必须是对象");
          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);//三个请求的返回的集合
     ajax('POST','./1.php',{XXXX}).then();
        
    })
时光清浅 2022-09-13 10:24:38

$.when , jQuery 的 API 。

花心好男孩 2022-09-13 10:24:38

如用了jQuery 1.6+,可以用jQuery延迟函数

$.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 是一个返回promise对像的函数,jQuery 延迟对像也是可以的
Promise.all([ajax_a(),ajax_b(),ajax_c()])
    .then(([a,b,c])=>ajax_d({a,b,c}))
    .then(d=>console.log(d))
暖心男生 2022-09-13 10:24:38

用promise.all就可以了

俏︾媚 2022-09-13 10:24:38

dasdasssssssssssssssssssssssssssssssssssssssssssssssssssss

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文