Ramda:如果 func 返回真实值,则在撰写中使用它,否则按原样返回



有没有像这样写的简洁的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)));
  1. 初始参数将传递给foo
  2. 然后将结果传递给执行真实检查的identity
  3. 当为真时,结果将传递给compose(bar1, bar2)
  4. 否则按原样返回结果

相关内容

  • 没有找到相关文章

最新更新