将 jQuery Deferred 列表链接在一起的问题

yilik01

我正在尝试将一组 jQuery Deferred 对象链接在一起,目的是在一切都解决后调用最终函数。

但是,我无法让 $.when.apply($, deferreds) 工作,但我无法弄清楚为什么它不起作用。

function callBackend(count) {
  var deferred = $.Deferred();
  setTimeout(function() {
    $("div").append("<p>" + count + "</p>");
    deferred.resolve();
  }, 50);
  return deferred.promise();
}

$(function() {
  $("a").click(function() {
    var promises = [];
    for (i = 1; i <= 10; i++) {
      var deferred = $.Deferred();
      callBackend(i).then(function() {
        deferred.resolve();
      });
      promises.push(deferred.promise());
    }
    $.when.apply($, promises).then(function() {
      $("div").append("<p>All done!</p>");
    });
  });
});

我创建了一个小提琴来说明这个问题。有人有想法吗?

http://jsfiddle.net/YNGcm/2244/

加布里埃尔·彼得里奥利

您可以直接使用 .xml 文件中创建的延迟元素callBackend

function callBackend(count) {
  var deferred = $.Deferred();
  setTimeout(function() {
    $("div").append("<p>" + count + "</p>");
    deferred.resolve();
  }, 500);
  return deferred;
}

$(function() {
  $("a").click(function() {
    var promises = [];
    for (i = 1; i <= 10; i++) {
      var deferred = callBackend(i)
      promises.push(deferred);
    }
    $.when.apply($, promises).then(function() {
      $("div").append("<p>All done!</p>");
    });
  });
});

http://jsfiddle.net/gaby/YNGcm/2243/

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章