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

Название Описание
.done()
.fail()
.then()
.always()

регистрируют обработчики перехода объекта deferred в состояние "выполнено"/"ошибка выполнения" (rejected/rejected)

.then() регистрирует два обработчика сразу

.always() общий обработчик на оба события

.progress() регистрирует обработчики прогресса выполнения объекта deferred.
.resolved()
.reject()
переводят объект deferred из состояния "не выполнено" в "успешно выполнено"/"ошибка выполнения".
.notify() вызывает событие частичного выполнения deferred (его прогресса выполнения).
.resolveWith()
.rejectWith()
переводят объект deferred из состояния "не выполнено" в "успешно выполнено"/"ошибка выполнения", с указанием и контекста выполнения (значение переменной this) обработчиков.
.notifyWith() вызывает событие частичного выполнения deferred (его прогресса выполнения), с указанием и контекста выполнения (значение переменной this) обработчика.
.isResolved()
.isRejected()
проверяют, находится ли объект deferred в состоянии resolve/reject.
.state() возвращает состояние объекта deferred ('pending'/'resolve'/'reject').
.pipe() позволяет производить предварительную обработку параметров, которые в итоге будут переданы в обработчики.
.promise() возвращает заместителя объекта deferred, отличающегося от последнего отсутствием методов изменения состояния.
$(...).promise() (применяется к объекту jQuery!) создает заместителя, следящего за выполнением очереди событий (например анимаций) на выбранных элементах.
$.when() на основе нескольких заданных объектов, создает новый deferred-объект, следящий за состоянием всех заданных.