В чем разница между обратным вызовом и обещанием

Возможный дубликат:
В чем отличия между отложенными, обещаниями и будущими в Javascript?

Может ли кто-нибудь указать, каковы различия между обратными вызовами и promises? Когда следует использовать обещание и т.д.

Также будут оценены ссылки на то, как создавать и использовать promises.

Ответ 1

Promises обеспечивают более сжатый и понятный способ представления последовательных асинхронных операций в javascript. Они представляют собой отличный синтаксис для достижения того же эффекта, что и обратные вызовы. Преимуществом является повышенная читаемость. Что-то вроде этого

aAsync()
  .then(bAsync)
  .then(cAsync)
  .done(finish);

является гораздо более читаемым, чем эквивалент передачи каждой из этих отдельных функций в качестве обратных вызовов, таких как

Async(function(){
    return bAsync(function(){
        return cAsync(function(){
            finish()
        })
    })
});