Я изучаю монаду с помощью JavaScript. Promise сам по себе является монадой и является правильным способом функциональной обработки асинхронных побочных эффектов. Как насчет нового плеера es7 async/await, можем ли мы использовать его в функциональном программировании JavaScript? Я чувствую, что хорошо определенная монада обещания возвращается к императивному пути. Или есть способ использовать async/await достаточно разумно, чтобы сделать программирование функций еще проще?
Является ли async/await неуместным в функциональном программировании JavaScript
Ответы (1)
Вы по-прежнему можете писать асинхронный код в функциональном стиле. async
/await
- это не что иное, как сахар, точно так же, как нотация do
в Haskell (хотя она ограничена промисами, а не общими монадами). Если вы пишете код с промисами и чувствуете, что async
/await
упростит его, используйте его.
Обратите внимание, что промисы часто используют побочные эффекты (и сама асинхронность, находясь во временной области, может считаться эффектом), поэтому императивный стиль часто не является неправильным подходом. Ведь даже функциональные программы имеют побочные эффекты.
person
Bergi
schedule
14.08.2016
Promise.resolve(Promise.resolve(3))
— это promise of the int, а не promise of promise. Однако есть хороший шлюз для монад. - person Jared Smith   schedule 15.08.2016