function doSomething() { // The task var dfd = new $.Deferred() ; // the deferred instance // simulate an asynchronous task setTimeout( function(){ if ( Math.random() > .5 ) dfd.resolve('the task was successful') ; else dfd.reject('there was an error') ; }, 1000 ) ; return dfd.promise() ; } var promise = doSomething() ; // call to an asynchronous task // bind callback functions to the promise promise.done( function(result){ alert('resolved: ' + result); }) ; promise.fail( function(result){ alert('rejected: ' + result); }) ; promise.always( function(result){ alert('always: ' + result); }) ;