Когда несколько объектов Deferred передаются в jQuery.when , метод возвращает обещание от нового «главного» объекта Deferred, который отслеживает агрегированное состояние всех объектов Deferred, которые он передал.
Метод либо
Если мастер-отложенный разрешен (т. Е. Разрешены ВСЕ отложенные), ему передаются разрешенные значения всех отложенных значений, которые были переданы в jQuery.when. Например, когда отложенными являются запросы jQuery.ajax (), аргументами будут объекты jqXHR для запросов в том порядке, в котором они были указаны в списке аргументов:
$.when( $.getJSON('foo'), $.getJSON('bar') ).done(function(foo, bar) {
// foo & bar are jqXHR objects for the requests
});
В случае нескольких отложенных запросов, когда один из отложенных запросов является отклонено, jQuery.when НЕМЕДЛЕННО ВЫЗЫВАЕТ обратные вызовы с ошибками для своего главного Отложенного, даже если некоторые из Отложенных еще могут быть неразрешенными в этот момент:
$.when( $.getJSON('foo'), $.getJSON('bar') ).fail(function(req) {
// req is the jqXHR object for one of the failed requests
});
Мне нужно запустить обратный вызов, когда все Отложенные, переданные в jQuery.when, больше не «нерешенные» (т. е. все либо «решены», либо «отклонены»). Я мог бы отправить объекты JSON с 200 кодами ОК (вместо отправки JSON с кодами состояния ошибки 404 Not Found) и определить успех / ошибку в методе done (), но я бы предпочел оставить свой API RESTful. Как я могу это сделать?