Promises provide a more succinct and clear way of representing sequential asynchronous operations in javascript. They are effectively a different syntax for achieving the same effect as callbacks. The advantage is increased readability. Something like this
aAsync()
.then(bAsync)
.then(cAsync)
.done(finish);
is much more readable then the equivalent of passing each of those individual functions as callbacks, like
Async(function(){
return bAsync(function(){
return cAsync(function(){
finish()
})
})
});