Групповой deferred
На основе нескольких заданных объектов (обычно deferred), функция $.when() создает новый deferred-объект, следящий за состоянием всех заданных. Стоит уточнить, что $.when() возвращает promise-версию (заместителя) deferred-объекта.
obj's — объекты (обычно deferred).
Задав в $.when() несколько deferred-объектов, вы получите новый объект этого типа. Он примет состояние выполнено, когда (и если) его примут все заданные в $.when() объекты. Если один из них перейдет в состояние ошибки выполнения, то созданный deferred примет это состояние вслед за ним.
// воспользуемся when(), чтобы получить объект следящий за выполнением // двух ajax запросов var newDef = $.when($.get("test1.php"), $.get("test2.php")); // установим обработчики выполнения newDef newDef.done(function(){ alert("Успешно выполнены 2 ajax-запроса"); }).fail(function(){ alert("При выполнении одного из ajax-запросов произошла ошибка"); });
Если передать в $.when() только один deferred-объект, то он просто возвратит его promise-версию. Помимо deferred-объектов в $.when() можно указывать любые другие javascript-объекты. Jquery всегда будет определять их состояние как успешно выполненное. Таким образом, $.when({fld:""}) вернет уже выполненный deferred-объект.