Can someone please explain with a basic example?
callback hell is basically the callback structure where you nest callback functions inside other callback functions it's like the famous if image

patching callbacks through different other functions.
promises basically are an collection + a shared state where you can define a flow of behavior :)
the idea is a non blocking control structure that triggers different asynchronous request in parallel that should resolve together.
The idea is rather old (Futures, Promises), but you know how it is we're really slow in catching up :).
mattgreer.org/articles/promises-in-wicked-detail
The callback hell is basically just the classic state hell of fragmented programming :). But that's just my opinion :) I guess real js programmers can elaborate in more detail about what and why :) I use them in different languages.
Promises allow for async operations. See this link for a great example.
I would add that there is a fantastic video series and book by Kyle Simpson that goes over the then vs. now of asynchronous abstractions in JavaScript.
Beyond Promises, we have actually two more asynchronous constructs that have been introduced in the newer releases of JavaScript: Generator Functions and Async Await.
Note: Generator functions have already been finalized in the ECMA standard while Async Await will be in the next release, but both can be used right now with Babel, Traceur, or any other transpiler.
Kleo Petrov
Professional human being for 29 years
We had discussed what callback hell is and how to solve it in a previous discussion - What's the perfect way to avoid callback hell in JavaScript?