【问题标题】:execute DefferedObjs asynchronously异步执行 DeferedObjs
【发布时间】:2013-06-17 07:12:19
【问题描述】:
var array = [DefferdObj, DefferdObj, DefferdObj, DefferdObj];

array[0].then
array[1].then
array[2].then
  ・
  ・
  ・

我想异步执行 DeferedObj。 这个数组可以动态改变。

【问题讨论】:

  • 这毫无意义!对象是否代表异步操作,例如包含返回承诺的 ajax 调用的函数等,如果不是,您打算如何获得异步行为,数组是否只包含承诺,或对您可以的函数的引用称呼。您需要添加更多代码!
  • Hoshipeace,如果您有一组 Deferreds(或 Promise),那么确定导致这些 Deferreds 的执行顺序为时已晚。现在,如果数组是一系列函数,那就另当别论了。
  • 感谢您阅读我的问题!下次我试着写出更好的问题。

标签: jquery jquery-deferred


【解决方案1】:

如果您希望在它们全部完成后运行一段代码,那么:

$.when.apply(null, array).then(function() {
  console.log("all deferreds in array are complete!");
});

如果您希望控制 deferreds 的运行顺序,则必须确保 deferreds 尚未开始。在将它们放入数组之前,我建议将它们包装在一个正在进行的 deferred 中。

var last = array[0];
function tackOnFunction(fn) {
  array.push(last = last.then(fn));
}

【讨论】:

  • 如果你真的不需要数组。我会把它全部扔掉,只使用 last = last.then(fn)。
猜你喜欢
  • 2012-02-05
  • 2017-11-14
  • 2013-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-25
  • 2011-03-20
相关资源
最近更新 更多