Пример:
В следующем примере создаётся объект Deferred для функции asyncEvent, который отслеживается и методе then, в функциях обратного вызова, при этом, какой результат будет конечным - успешный или не успешный, заранее не известен, так как функция использует javascript интервал (setTimeout), второй параметр которого формируется на основе случайного числа.
"jQuery"
// Создание объекта Deferred его отслеживание через Promise
function asyncEvent(){
var dfd = new jQuery.Deferred();
setTimeout(function(){
dfd.resolve("успешно");
}, Math.floor(Math.random()*1500));
setTimeout(function(){
dfd.reject("неуспешно");
}, Math.floor(Math.random()*1500));
return dfd.promise();
}
// привязать функции обработчики для функции asyncEvent()
$.when( asyncEvent() ).then(
function(status){
alert( status+', завершён метод' );
},
function(status){
alert( status+', завершён метод' );
}
);