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

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

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

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

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

Похожие вопросы