Я новичок в функциональном программировании, и я нашел следующий пример функционального программирования Fluture, который, кажется, дает действительно хороший пример обработки запросов к базе данных и последующей обработки данных. Предостережение, однако, заключается в том, что при чтении о концепциях функционального программирования монады Just/Nothing, казалось, были предложенным подходом для обработки проверки нулей. 1) Как это впишется в этот пример и 2) если findOne отклонится, остановит ли он последующие цепочки и сразу же перейдет к форку?
import Future from 'fluture';
const processAll = Future.fork(_sendError, _sendResponse);
const _fetchFromDB =
encaseP(userId => myModel.findOne({ id: userId }).exec())
//Future.fromPromise(userId => myModel.findOne({ id: userId }).exec())
processAll(_fetchFromDB(userId)
.chain(getDataGeneric)
.chain(_findDevice)
.chain(_processRequest))
Я получил этот пример из следующей ссылки stackoverflow и изменил fromPromise на encaseP:
Как сделать Монады должны знать об асинхронных функциях (Promises/Future)
Я предполагаю, что encaseP заменит fromPromise в своем примере при преобразовании Promise в Future.