jQuery.when()
Функция jQuery.when()
используется для создания Deferred-объекта, состояние которого зависит от состояния переданных в него объектов. Объекты передаются отдельными аргументами. Это могут быть Deferred-объекты или простые JavaScript-объекты.
Функция jQuery.when()
возвращает Promise-версию Deferred-объекта, то есть его состояние нельзя изменить принудительно. Он перейдёт в состояние выполнено
тогда, когда все переданные объекты примут состояние выполнено
. Если хотя бы один объект примет состояние отклонено
, тогда и общий объект перейдёт в это состояние. Простые JavaScript-объекты, передаваемые в метод jQuery.when()
, всегда имеют состояние выполнено
.
Если метод jQuery.when()
вызывается без аргументов, тогда он возвращает Promise-объект в состоянии выполнено
.
Если методу jQuery.when()
передаётся один простой JavaScript-объект, тогда он возвращает Promise-объект в состоянии выполнено
. Обработчики состояния выполнено
получат в качестве аргумента указанный JavaScript-объект.
Если аргументом метода jQuery.when()
указан один Deferred-объект, тогда метод возвращает его Promise-версию, то есть аналогично использованию метода deferred.promise().
Варианты использования
jQuery.when([объект_1[, объект_2[...]]]) => Promise
- Возвращает новый Deferred-объект. В качестве аргументов можно указывать Deferred-объекты или простые JavaScript-объекты.
Примеры
/* Создание заместителя выполненного Deferred-объекта */ var promise = $.when(); promise.done(function() { alert('Выполнить немедленно'); }); /* Создание заместителя выполненного Deferred-объекта с передачей аргумента */ var promise = $.when({test: 'Тест пройден'}); promise.done(function (obj) { alert(obj.test); /* 'Тест пройден' */ }); /* Создание общего Deferred-объекта для отслеживания двух других */ var promise = $.when($.ajax('/test_1.php'), $.ajax('/test_2.php')); promise .done(function() { alert('Все ajax-запросы выполнены'); }) .fail(function() { alert('Как минимум один ajax-запрос не выполнен'); });