jQuery.when - Обратный вызов, когда ВСЕ отложенные объекты больше не являются «неразрешенными» (разрешены или отклонены)?

Когда несколько объектов Deferred передаются в jQuery.when , метод возвращает обещание от нового «главного» объекта Deferred, который отслеживает агрегированное состояние всех объектов Deferred, которые он передал.

Метод либо

  1. разрешит свой главный отложенный метод, как только разрешатся ВСЕ отложенные запросы, либо
  2. отклонит свой главный отложенный метод, как только ОДИН из отложенных методов будет отклонен.

Если мастер-отложенный разрешен (т. Е. Разрешены ВСЕ отложенные), ему передаются разрешенные значения всех отложенных значений, которые были переданы в 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. Как я могу это сделать?

37
задан hippietrail 26 August 2016 в 02:43
поделиться