Saya baru mengenal pemrograman fungsional dan saya menemukan contoh pemrograman fungsional fluture berikut yang tampaknya memberikan contoh yang sangat bagus untuk menangani kueri basis data dan manipulasi data selanjutnya. Namun peringatannya adalah bahwa dalam membaca tentang konsep pemrograman fungsional, monad Just/Nothing tampaknya merupakan pendekatan yang disarankan untuk menangani pemeriksaan nol. 1) Bagaimana hal itu cocok dengan contoh ini dan 2) jika findOne ditolak, apakah ini akan menghentikan jalannya rantai berikutnya dan segera menuju ke percabangan?
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))
Saya mendapatkan contoh ini dari tautan stackoverflow berikut dan memodifikasi fromPromise menjadi encaseP:
Cara membuat keduanya Monad memperhatikan fungsi Async (Janji/Masa Depan)
Saya berasumsi bahwa encaseP akan menggantikan fromPromise dalam contoh mereka dalam mengubah Janji menjadi Masa Depan.