【问题标题】:Using jQuery .when, How to pass in variable number of function calls?使用 jQuery .when,如何传入可变数量的函数调用?
【发布时间】:2019-05-07 18:15:35
【问题描述】:

我想要将$.ajax(urlx) 设为可变数量的URL,但我没有看到任何关于如何将其传递给$.when 的示例。它看起来不像 .when 需要一个数组,只是一个参数列表。

我怎样才能做到这一点?

var picturesArray = [];
var urlCount = 2;
$.when(
  $.ajax(urls[0]),
  $.ajax(urls[1])
).done(function() {
  var cntx;
  for (cntx = 0; cntx < urlCount; cntx++) {
    picturesArray.push(arguments[cntx][0]);
  }
});

【问题讨论】:

  • 看看这是否有帮助:stackoverflow.com/a/14352218/9386929
  • 谁消失了之前的答案和关于该答案的讨论?不知道这可能发生在 SO
  • 我删除了自己的答案,因为它没有提供正确的解决方案。
  • 奇怪,我以为一旦有 cmets 就无法删除。我猜我错了。

标签: javascript jquery


【解决方案1】:

我终于让它工作了。答案是这样的,不过还有更多细节。

var requests = [];
for (i = 0; i < urls.length; i++) {
  requests.push(
    $.ajax({
      urlIndex: i,
      url: urls[i],
      success: function(data, textStatus) {
        jsonResult[this.urlIndex] = {
          data: data,
          status: textStatus,
          error: "",
          viewed: false
        };
        console.log("success:" + new Date().getMilliseconds());
      },
      error: function(jqXHR, textStatus, errorThrown) {
        jsonResult[this.urlIndex] = {
          data: {},
          status: textStatus,
          error: errorThrown,
          viewed: false
        };
        console.log("error:" + new Date().getMilliseconds());
      }
    })
  );
}
$.when.apply(undefined, requests).then(
  function() {
    callback();
  },
  function() {
    callback();
  }
);

【讨论】:

    猜你喜欢
    • 2010-12-22
    • 1970-01-01
    • 2020-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多