Javascript JQuery/Ajax:如何将多个Ajax组合成一个带有响应的异步Ajax?

Javascript JQuery/Ajax:如何将多个Ajax组合成一个带有响应的异步Ajax?,javascript,jquery,ajax,Javascript,Jquery,Ajax,异步时是否可以使用$: init: function() { console.log('begin'); $.when( {async: true}, this.ajax1(), this.ajax2(), this.ajax3() ).done(function() { console.log('success'); }, function () { console.log('error');

异步时是否可以使用$:

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(){ ..,complete:function(){ajax2 call}–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: ...)
   );
}

现在它开始工作了!

$。当以这种方式使用时,
是异步的,您总是不需要设置任何内容。但是,您永远不应该使用同步ajax。您不能在ajax1完成时调用ajax2。例如,$ajax(){……,complete:function(){ajax2 call}如果第一个参数不是deferred,那么它可能与
jQuery
立即调用done回调有关。我的ajax中的$是同步的,这就是为什么它不工作的原因。类似的问题: