Задать вопрос

В чем отличие промисов от монад?

Я не очень в теории, потому интересно.
Ведь та же цепочка вызовов функции, в каждую последующую отправляющийся результат и информация об успехе-неуспехе.
  • Вопрос задан
  • 3347 просмотров
Подписаться 4 Оценить 1 комментарий
Пригласить эксперта
Ответы на вопрос 2
Promise - одна из монад, где bind (>>=), упрощённо, из обещания и из последующей функции делает новое обещание, которое дожидается выполнения первого обещания и передаёт результат в следующую функцию. В итоге управление в вызывающую функцию возвращается на первом же ожидании.

Но монады есть и другие. Например Either, позволяющий выдать "ошибку", т.о. обрывая всю цепь вычислений на первой же ошибке. Или Maybe, ведущий себя аналогично Either, но не с возвратом какого-то ошибочного значения, а просто с остановкой на первом фейле. Список - тоже монада, там последующая функция будет вычислена на каждом элементе, а результате сконкатенированы.
Ответ написан
Комментировать
AMar4enko
@AMar4enko
Promise это не цепочка вызовов. Promise (в переводе "обещание") - функция вам говорит, что в данный конкретный момент она не может вам вернуть результат, но она ОБЕЩАЕТ, что через некоторое время она вам его вернет. Или вернет ошибку. Promise это инструмент, который позволяет более-менее сносно существовать асинхронному коду.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
OfferCase Москва
от 400 000 ₽
ITK academy Нижний Новгород
от 80 000 до 120 000 ₽
Future Москва
от 50 000 до 70 000 ₽