deferred.promise()
Аргументы
deferred.isResolved()
Метод deferred.promise() позволяет асинхронным функциям предотвратить вмешательство другого кода в ход или статус своего внутреннего запроса. Promise предоставляет только Отсроченные методы, необходимые для подключения дополнительных обработчиков или определения состояния (then, done, fail, isResolved, и isRejected), но не те, которые изменяют состояние (resolve, reject, resolveWith, and rejectWith).
Если вы создаете Отсроченный объект, сохраните ссылку на него, с тем, чтобы можно было этот объект решить или отклонить в какой-то момент. Возвращается объект Promise только через deferred.promise(), таким образом другой код может зарегистрировать обратные вызовы или проверить текущее состояние.
Для более подробной информации смотрите Отсроченный объект.
Пример
Этот тест создает Отсроченный объект и устанавливает два таймера на основе функций либо разрешить или отклонить Отсроченный через случайный промежуток времени. Первый тайм-аут запускает первый объект и один из обратных вызовов. Второй тайм-аут не имеет силы так как Отсроченный уже завершен (в решенном или отклоненном состоянии) от первого действия тайм-аута.
// Create a Deferred and return its Promise
function asyncEvent(){
var dfd = new jQuery.Deferred();
setTimeout(function(){
dfd.resolve("hurray");
}, Math.floor(Math.random()*1500));
setTimeout(function(){
dfd.reject("sorry");
}, Math.floor(Math.random()*1500));
return dfd.promise();
}
// Attach a done and fail handler for the asyncEvent
$.when( asyncEvent() ).then(
function(status){
alert( status+', things are going well' );
},
function(status){
alert( status+', you fail this time' );
}
);

