Edit in JSFiddle

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); }) ;