Чем отличаются от обратных вызовов?
Обратные вызовы не могут передавать возвращаемое значение остальной части программы. Это позволяет вам играть только с «побочными эффектами» (просто изменение состояния)
Использование чистых обратных вызовов приводит к пирамиде гибели. У вас есть обратные вызовы внутри обратных вызовов.
readFile(“file”, (err, res)=>{ if (err) return err; readFile(“file”, (err, res)=>{ if (err) return err; // etc. } })
Или вы можете использовать try catch. и т.д. по сути, этот способ действительно отстой.
вот тут-то и появляются обещания.
——————————————
Сам возврат является синхронным. не дает большой гибкости. return вернет немедленно. Мы не можем сохранить его в другую переменную.
Вы не хотите, чтобы следующий запускался до того, как вы закончите чтение файла и т. д.
Меня это смутило: функция-исполнитель должна иметь два параметра: параметр разрешения и параметр отклонения, каждый из которых определяет
.then
и
.catch
Ключевой момент: обещания находятся в ожидании до тех пор, пока они не будут разрешены/отклонены
console.log(myPromise) // pending myPromise.then // this will week to resolve it // once it does, it passes the value to the next then // or if it's error, it passes to the next catch