To see more general explanations of promises: Promises and Deferreds - How I Stared To Like Them At a basic level what Promises do is the same thing as passing a callback to a function. function myFunc ( callback ) { . . . } myFunc ( alert ) ; var promise = myFunc ( ) ; promise . then ( alert ) ; But it is easy to get too many callbacks (if you work without promises), you need at least two, one for error and one for success. Functions need some arguments and you end up with a monster like: myUgly ( success , error , param1 , param2 , param3 ) or move to a config object: myBetter ( { success : success , error : error } ) ; When I want to add another success function it gets uglier: myBetter ( { successes : [ success1 , success2 ] , error : error } ) ; The same functionality with promises will be probably more verbose but I think this is a good thing. The code below is much more maintainable and extensible: var promise = myPrecious ( { p