Open
Description
It will be super helpful to have a monad-like syntax for Future
. Here is something we are using for promises
/** Resolve promise, requires to manually handle promise */
let (>>-) = (m: Js.Promise.t('a), f: 'a => Js.Promise.t('b)) =>
Js.Promise.then_(f, m);
/** Resolve promise with auto return */
let (>>=) = (m: Js.Promise.t('a), f: 'a => 'b) =>
Js.Promise.then_(a => resolve(f(a)), m);
let (>>|) = (m: Js.Promise.t('a), f: 'a => 'b) =>
Js.Promise.then_(
a => {
f(a);
resolve(ignore);
},
m,
);
/** Catch promise */
let (>>/) = (m: Js.Promise.t('a), f: Js.Promise.error => Js.Promise.t('a)) =>
Js.Promise.catch(f, m);
/** Catch promise with auto return */
let (>>/=) = (m: Js.Promise.t('a), f: Js.Promise.error => 'a) =>
Js.Promise.catch(e => Js.Promise.resolve(f(e)), m);
P.S. I could submit a PR for this if you don't mind. Thanks for the awesome work ;)
Metadata
Metadata
Assignees
Labels
No labels