Когда несколько объектов с отложенным передаются в jQuery.when, метод возвращает Promise из нового объекта "master" Deferred, который отслеживает совокупность состояние всех Отложенных дел прошло.
Метод будет либо
- разрешить своего хозяина Отложенное, как только ВСЕ отложенные решения будут разрешены, или
- отклонить своего хозяина Отложить, как только ОДИН из Отложенных будет отклонен.
Если хозяин Deferred разрешен (т.е. ALL the Deferreds), он передает разрешенные значения всех Отложенных, которые были переданы 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. Когда они больше не "неразрешены" (т.е. все либо "разрешены", либо "отклонены" ). Я мог бы отправлять объекты JSON с 200 кодами OK (вместо отправки JSON с кодами статуса ошибки 404 Not Found) и определить успех/ошибку в методе done(), но я бы предпочел сохранить мой API RESTful. Как я могу это сделать?