jQuery объект Deferred
Описание и примеры этого раздела рассчитаны на jQuery 3.1.1. Метки устаревания указывают также изменения
в более поздних версиях; они не означают, что API отсутствует в 3.1.1.
Объект Deferred был введен в версии jQuery 1.5, является специальным объектом с методами
регистрации нескольких обратных вызовов в очереди обратного вызова, он создается путем вызова фабричной функции
$.Deferred()
(создает экземпляр объекта). Объект Deferred позволяет передавать состояние "success" или
"failure" любой синхронной или асинхронной функции, что дает возможность зарегистрировать необходимые функции,
которые будут вызваны при определенном условии .
После создания объекта Deferred можно использовать любой из приведенных ниже методов, связывая его
непосредственно с объектом, либо сохраняя объект в отдельной переменной и вызывая один или несколько методов для этой
переменной.
Синтаксис функции $.Deferred()
// без параметра
let myDeferredObject = $.Deferred()
// с указанием функции
let myDeferredObject = $.Deferred( beforeStart )beforeStart - Function( Deferred deferred )
Значение параметра
| Параметр | Описание |
|---|---|
| beforeStart |
Функция, которая вызывается непосредственно перед возвращением из конструктора объекта. Новый отложенный
объект будет доступен как по this, так и в качестве первого аргумента функции. Вызываемая функция
может присоединять обратные вызовы, например с помощью метода
deferred.then().
|
Более подробную информацию и примеры использования вы можете получить в описании функции $.Deferred().
Методы объекта Deferred и функция $.Deferred()
| Метод / функция | Описание |
|---|---|
| $.Deferred() | Фабричная функция, которая возвращает специальный объект с методами регистрации нескольких обратных вызовов в очереди обратного вызова, вызывает очереди обратного вызова и передает состояние "success" или "failure" любой синхронной или асинхронной функции. |
| deferred.always() |
Добавляет обработчик или обработчики, которые будут вызваны при изменении состояния объекта
Deferred на resolved (успешное выполнение), или rejected (выполнение отклонено).
|
| deferred.catch() |
Добавляет обработчик или обработчики, которые будут вызваны при изменении состояния объекта
Deferred на rejected (выполнение отклонено).
|
| deferred.done() |
Добавляет обработчик или обработчики, которые будут вызваны при изменении состояния объекта
Deferred на resolved (успешное выполнение).
|
| deferred.fail() |
Добавляет обработчик или обработчики, которые будут вызваны при изменении состояния объекта
Deferred на rejected (выполнение отклонено).
|
| deferred.notify() |
Запускает событие прогресса выполнения с определенными аргументами, которое позволяет вызвать обработчики
состояния объекта Deferred, находящегося на стадии выполнения (deferred.progress()
и
deferred.then()).
|
| deferred.notifyWith() |
Запускает событие прогресса выполнения с определенными аргументами и контекстом выполнения, которое позволяет
вызвать обработчики состояния объекта Deferred, находящегося на стадии выполнения (deferred.progress()
и
deferred.then()).
|
| deferred.progress() |
Добавляет обработчик или обработчики, вызываемые когда объект Deferred создает уведомления о ходе
выполнения.
|
| deferred.promise() |
Возвращает копию объекта Deferred (объект Promise), который имеет аналогичный набор
методов, за исключением методов изменения состояния объекта.
|
| deferred.reject() |
Изменяет состояние объекта Deferred на rejected (выполнение отклонено) и вызывает любые,
предназначенные для подобных ситуаций функции обратного вызова (failCallbacks) с заданными аргументами.
|
| deferred.rejectWith() |
Изменяет состояние объекта Deferred на rejected (выполнение отклонено) и вызывает любые,
предназначенные для подобных ситуаций функции обратного вызова (failCallbacks) с заданным контекстом и
аргументами.
|
| deferred.resolve() |
Изменяет состояние объекта Deferred на resolved (успешное выполнение) и вызывает любые,
предназначенные для подобных ситуаций функции обратного вызова (doneCallbacks) с заданными аргументами.
|
| deferred.resolveWith() |
Изменяет состояние объекта Deferred на resolved (успешное выполнение) и вызывает любые,
предназначенные для подобных ситуаций функции обратного вызова (doneCallbacks) с заданным контекстом и
аргументами.
|
| deferred.state() | Определяет текущее состояние выполнения объекта Deferred. |
| deferred.then() |
Добавляет обработчик или обработчики, вызываемые когда объект Deferred имеет состояние
resolved (успешное выполнение), rejected (выполнение отклонено), или находится на стадии
выполнения.
|
| $.when() |
Предоставляет способ выполнения функций обратного вызова на основе нуля или более объектов, имеющих метод
.then(), как правило, объекты Deferred, которые представляют асинхронные события.
|
| .promise() |
Возвращает динамически сгенерированный объект Promise для наблюдения за завершением всех действий
определенного типа, связанных с коллекцией jQuery, поставленных в очередь или нет.
|
Дополнительные возможности jQuery 3.1.1
| API | Описание |
|---|---|
deferred.pipe() Устарело |
Создаёт Promise с преобразованными результатами или уведомлениями. Устарел с jQuery 1.8; используйте
.then(), учитывая его асинхронность и обработку ошибок в jQuery 3.
Документация.
|
$.Deferred.exceptionHook() |
Диагностический обработчик исключений внутри Deferred. Получает ошибку; переопределение позволяет настроить её
журналирование и не заменяет обработчик .catch().
Документация.
|
$.Deferred.getStackHook() Устарело |
Необязательная точка расширения для сохранения стека до асинхронного вызова Deferred. В jQuery 3.1.1 не
определена по умолчанию; пользовательская функция возвращает стек для exceptionHook.
Документация. Устарело
с jQuery 3.7.
|