繁体   English   中英

JQuery / Ajax:如何将多个Ajax与一个带有响应的异步Ajax结合?

[英]JQuery/Ajax: How to combine several ajaxes into one async ajax with response?

异步使用$。

init: function() {
   console.log('begin');
   $.when(
      {async: true},
      this.ajax1(),
      this.ajax2(),
      this.ajax3()
   ).done(function() {
      console.log('success');
   }, function () {
       console.log('error');
   });
   console.log('end');
}

每个ajax1,ajax2或ajax3都可以同步或异步

如果不正常,那么我希望在控制台输出中看到下一个顺序

开始

结束

成功(或错误)

但是实际输出始终是:

开始

成功(或错误)

结束

您永远不要使用同步ajax。 –阿德尼奥

问题是我的某些ajax是同步的,因为它们的结果是依赖的。

ajax1完成后无法调用ajax2。 例如$ ajax(){.....,完成:function(){ajax2调用} – user3509208

因此,我使它们异步,并为那些依赖数据的人完成了内部ajax的操作:

init: function() {
   console.log('begin');
   $.when(
      {async: true},
      this.ajax1(),
      this.ajax2()
   ).done(function() {
      console.log('success');
   }, function () {
       console.log('error');
   });
   console.log('end');
}


ajax1: function() {
   return $.ajax('url', {
   async: true,
   success: ... ,
   error: ...)
   );
}

ajax2: function() {
   return $.ajax('url', {
   async: true,
   success: ajax3(),
   error: ...)
   );
}

ajax3: function() {
   return $.ajax('url', {
   async: true,
   success: ... ,
   error: ...)
   );
}

现在它正在工作!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM