将回调附加到多个jquery承诺

时间:2014-11-19 19:21:58

标签: javascript jquery jquery-deferred

我有多个延迟对象。我需要为每个延迟对象附加一次处理程序。

我知道我可以使用

$.when.apply($, my_array);

但据我了解,只有在解析了所有延迟对象后才会触发。

每次解析一个对象时我都需要被解雇。我可以使用一个循环,但我想知道是否有类似于使用$ .when上述行的行。

2 个答案:

答案 0 :(得分:1)

你必须使用循环;没有单独处理每个承诺的语法糖。

function doneCallback() {
  // your common callback
}

$.each(my_array, function(my_deferred) {
    my_deferred.done(doneCallback);
}

答案 1 :(得分:0)

不完全确定这是否是您尝试做的事情,但听起来您需要做的是创建一个主延迟对象,然后将延迟对象数组传递给它。使用.always()将处理程序添加到数组中的对象,这会触发延迟失败或成功。当所有子延迟对象都被解析后,主延迟.done()将被触发。

此外,$ .when()可以处理延迟对象的数组,因此您可以尝试$.when(my_array).always(function()...)