Перейти к содержанию

Deferred

Объект Deferred был введен в версии jQuery 1.5, является специальным объектом с методами регистрации нескольких обратных вызовов в очереди обратного вызова, он создается путем вызова фабричной функции $.Deferred() (создает экземпляр объекта). Объект Deferred позволяет передавать состояние success или failure любой синхронной или асинхронной функции, что дает возможность зарегистрировать необходимые функции, которые будут вызваны при определенном условии.

После создания объекта Deferred можно использовать любой из приведенных ниже методов, связывая его непосредственно с объектом, либо сохраняя объект в отдельной переменной и вызывая один или несколько методов для этой переменной.

Синтаксис

// без параметра
let myDeferredObject = $.Deferred()

// с указанием функции
let myDeferredObject = $.Deferred(beforeStart)

beforeStart - Function( Deferred deferred )

Значения

beforeStart
Функция, которая вызывается непосредственно перед возвращением из конструктора объекта. Новый отложенный объект будет доступен как по this, так и в качестве первого аргумента функции. Вызываемая функция может присоединять обратные вызовы, например с помощью метода deferred.then().

Более подробную информацию и примеры использования вы можете получить в описании функции $.Deferred().

Методы объекта Deferred и функция \$.Deferred()

$.Deferred()
Фабричная функция, которая возвращает специальный объект с методами регистрации нескольких обратных вызовов в очереди обратного вызова, вызывает очереди обратного вызова и передает состояние success или failure любой синхронной или асинхронной функции.

deferred.always() Добавляет обработчик или обработчики, которые будут вызваны при изменении состояния объекта Deffered на resolved (успешное выполнение), или rejected (выполнение отклонено).

deferred.catch() Добавляет обработчик или обработчики, которые будут вызваны при изменении состояния объекта Deffered на rejected (выполнение отклонено).

deferred.done() Добавляет обработчик или обработчики, которые будут вызваны при изменении состояния объекта Deffered на resolved (успешное выполнение).

deferred.fail() Добавляет обработчик или обработчики, которые будут вызваны при изменении состояния объекта Deffered на rejected (выполнение отклонено).

deferred.notify() Запускает событие прогресса выполнения с определенными аргументами, которое позволяет вызвать обработчики состояния объекта Deffered, находящегося на стадии выполнения (deferred.progress() и deferred.then()).

deferred.notifyWith() Запускает событие прогресса выполнения с определенными аргументами и контекстом выполнения, которое позволяет вызвать обработчики состояния объекта Deffered, находящегося на стадии выполнения (deferred.progress() и deferred.then()).

deferred.progress() Добавляет обработчик или обработчики, вызываемые когда объект Deffered создает уведомления о ходе выполнения.

deferred.promise() Возвращает копию объекта Deffered (объект Promise), который имеет аналогичный набор методов, за исключением методов изменения состояния объекта.

deferred.reject() Изменяет состояние объекта Deffered на rejected (выполнение отклонено) и вызывает любые, предназначенные для подобных ситуаций функции обратного вызова (failCallbacks) с заданными аргументами.

deferred.rejectWith() Изменяет состояние объекта Deffered на rejected (выполнение отклонено) и вызывает любые, предназначенные для подобных ситуаций функции обратного вызова (failCallbacks) с заданным контекстом и аргументами.

deferred.resolve() Изменяет состояние объекта Deffered на resolved (успешное выполнение) и вызывает любые, предназначенные для подобных ситуаций функции обратного вызова (doneCallbacks) с заданными аргументами.

deferred.resolveWith() Изменяет состояние объекта Deffered на resolved (успешное выполнение) и вызывает любые, предназначенные для подобных ситуаций функции обратного вызова (doneCallbacks) с заданным контекстом и аргументами.

deferred.state() Определяет текущее состояние выполнения объекта Deffered.

deferred.then() Добавляет обработчик или обработчики, вызываемые когда объект Deffered имеет состояние resolved (успешное выполнение), rejected (выполнение отклонено), или находится на стадии выполнения.

$.when() Предоставляет способ выполнения функций обратного вызова на основе нуля или более объектов, имеющих метод .then(), как правило, объекты Deffered, которые представляют асинхронные события.

.promise() Возвращает динамически сгенерированный объект Promise для наблюдения за завершением всех действий определенного типа, связанных с коллекцией jQuery, поставленных в очередь или нет.