$.when 承诺对象不起作用[重复]

Posted

技术标签:

【中文标题】$.when 承诺对象不起作用[重复]【英文标题】:$.when promise object not working [duplicate] 【发布时间】:2016-10-23 12:51:24 【问题描述】:

我正在发出并发 AJAX 请求,但在尝试等待所有调用返回时遇到问题,done() 中的 console.log 将结果显示为空数组。 $.when 不等待请求完成。

 var result = []
  var promise = []
  for (i=0;i < array.length;i++)
  
    _url = "http://example.com"
      var req = $.ajax(
        
          type: "GET",
          url: _url,
          success: function(request)  result.push(request)         
           ,
          error: function(request)   result.push("ERROR BROTHA")              
        
        );
      promise.push(req)
  

  $.when(promise).done(function()
    console.log(result);
  );

【问题讨论】:

ES6 解决方案:$.when(...promise).done(); @MarcoScabbiolo:如果你使用 ES6,你会写 Promise.all(promise).then(…) 【参考方案1】:

你需要传播数组。 Docs.

$.when.apply($, promise).done(...);

来自文档

jQuery.when( deferreds )

deferreds 零个或多个 Deferred 对象,或纯 javascript 对象。

【讨论】:

以上是关于$.when 承诺对象不起作用[重复]的主要内容,如果未能解决你的问题,请参考以下文章

承诺`终于'不起作用

承诺在 IE11 上不起作用

模拟when().thenReturn()返回值不起作用

蓝鸟承诺“promisifyAll”不起作用 - 无法读取属性“then”

带有承诺的 Redux-thunk 不起作用

jquery.when done 不起作用:它立即执行[关闭]