有没有像这样写的简洁的Ramda方法:
const ifOkCompose = (...args) => {
const r = foo(...args);
if (r) {
return compose(bar1, bar2)(r);
}
return r;
};
如果 foo(( 返回 truthy 值,则将其发送给 compose,否则只需返回它。有"when",但它会返回参数而不是返回值 'foo(...('。
换句话说,我有一个函数foo,它可能返回undefined,我在撰写中使用它作为compose(bar1, bar2, foo)
。如果 foo(...( 返回未定义,我想踢出组合并返回未定义。
R.composeWith
的文档示例接近您想要的。
const composeWhileNotNil = R.composeWith((f, res) => R.isNil(res) ? res : f(res))
composeWhileNotNil([bar1, bar2, foo])
最大的区别在于,这将停止任何零响应的合成,而不仅仅是第一个响应。 显然,如果您只想停止undefined
而不是null
,您可以轻松更改它。
我认为这样的事情会起作用:
const ifOkCompose = pipe(foo, when(identity, compose(bar1, bar2)));
- 初始参数将传递给
foo
- 然后将结果传递给执行真实检查的
identity
- 当为真时,结果将传递给
compose(bar1, bar2)
- 否则按原样返回结果