2014-11-19 4 views
0

У меня есть несколько объектов с отложенными сроками. Мне нужно приложить обработчики, которые будут уволены один раз на отложенный объект.Подключить обратный вызов к нескольким обещаниям jquery

Я знаю, что я могу использовать

$.when.apply($, my_array); 

но, как я понимаю, сделано будет срабатывать только один раз все отложенные объекты будут решены.

Мне нужно сделать, чтобы стрелять каждый раз, когда объект разрешен. Я, вероятно, могу использовать цикл, но я хотел бы знать, есть ли что-то вроде строк линии выше, используя $ .when.

ответ

1

Вы должны использовать цикл; нет синтаксического сахара для передачи каждого обещания индивидуально.

function doneCallback() { 
    // your common callback 
} 

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

Не совсем уверен, что это то, что вы пытаетесь сделать, но похоже, что вам нужно сделать, это создать главный отложенный объект, а затем передать массив отложенных объектов на него. Добавьте обработчики к объектам в массиве с помощью .always(), который запускает неудачу или неудачу отложенного. Когда все дочерние отложенные объекты будут разрешены, мастер отложит .done().

также $ .when() может обрабатывать массивы отсроченных объектов, так что вы могли бы попробовать $.when(my_array).always(function()...)

+0

Я думаю, что OP хочет, чтобы обработчик 'done' стрелял по обещанию _each_. (например, 3 обещания приводят к 3 выполненным вызовам.) – Mathletics

+0

В этом случае я думаю, что он может сделать my_array.on ('done', function() {}); –

+0

@Mathletics прав. Официально поддерживается ('done'). Я не мог найти информацию об этом. – d0001

Смежные вопросы