jQuery deferred objects and the Promise/A+ specifications are slightly different, with Promise/A+ being more canonical. jQuery deferred is a proxy for asynchronous future events, whereas promise allows for state inspection. The Promise specification is completely immutable.
A typical Ajax with a callback function looks like the following code snippet:
The most frequent issues with callback are the conflicts with DOM ready state and rendering. The same code written in Promise is more elegant. Promise provides the done(), fail() and always() event handlers in an orderly fashion.
You can also use Promise to chain callbacks with the help of the then() method as shown below:
Another significant feature of Promise is the ability to combine multiple service calls with the when() function as shown below: