jQuery.when( отсроченные )
jQuery.when( отсроченные )
jQuery.when, он возвращается методом и дополнительными методами Отсроченного объекта и может вызвать приложенный обратный вызов, такой как defered.then. Когда Отсроченный разрешен или отклонен, как правило, кодом, который создал Отсроченный объект первоначально, соответствующие функции обратного вызова будут вызваны. Например, объект jqXHR, возвращенный с помощью jQuery.ajax является Отсроченным и может быть использован следующим образом:jQuery.when и он не Отсроченный, он будет рассматриваться как решенный Отложенный объект и любые прикрепленные doneCallbacks (удачные функции обратного вызова) будут немедленно вызваны. doneCallbacks передают оригинальный аргумент. В этом случае любые failCallbacks (неудачные функции обратного вызова), которые вы можете установить, никогда не будут вызваны, так как Отсроченный не будет отменен. Например:
$.when( { testing: 123 } ).done(
function(x){ alert(x.testing); } /* alerts "123" */
);
В случае, когда несколько Отсроченных объектов передаются в jQuery.when, метод возвращает новый "основной" Отсроченный объект, который отслеживает агрегатное состояние всех Отсроченных объектов, которые он принимает. Метод решает основной Отсроченный объект, как только все Отсроченные решены, или отклоняет основной Отсроченный, как только один из Отсроченных отклонен. Если основной Отсроченный будет решен, он передает решенные значения всех Отсроченных, которые были переданы в jQuery.when. Для примера, когда Отсроченный выполняет запросы jQuery.ajax(), аргументами будут объекты jqXHR для запросов, в том порядке, в котором они находятся в списке аргументов.
В случае множественных Отсроченных объектов, когда один из Отсроченных отклонен, jQuery.when немедленно запускает failCallbacks для его основного Отсроченного объекта. Обратите внимание, что некоторые Отсроченные могут быть все еще не решены в этот момент. Если вам необходимо выполнить дополнительную обработку для этого случая, такую как отмена любых незавершенных запросов Ajax, вы можете сохранить ссылки на базовые объекты jqXHR и проверить/отменить их в failCallback.
Примеры
Пример 1
Выполняет функцию после двух успешных запросов Ajax. (Смотрите документацию по jQuery.ajax() для полного описания успешных и ошибочных случаев по запросам Ajax).$.when($.ajax("/page1.php"), $.ajax("/page2.php")).done(function(a1, a2){ /* a1 and a2 are arguments resolved for the page1 and page2 ajax requests, respectively */ var jqXHR = a1[2]; /* arguments are [ "success", statusText, jqXHR ] */ if ( /Whip It/.test(jqXHR.responseText) ) { alert("First page has 'Whip It' somewhere."); } });

