在以无点风格写这篇文章时,我希望得到一些帮助。
对于上下文:该函数采用 Either 类型的 Array 并返回 Task 类型。任务类型被任何具有左集的 Either 类型拒绝。如果左侧集合中没有 Either 类型,则解析任务类型。这是以这种方式使用的:
Async.parallel(xs).
map(eachToEither).
chain(rejectAnyLefts).
fork(error, success)
在实践中,我会添加另一个链(就在分叉之前)来执行 perist。但首先我要确保我的代码是尽可能地地道的。手头的函数是我想编写无点的rejectAnyLefts,但是有几件事让我陷入了循环。
- 如果
- 需要存储要在 IF 中使用的 leftObjs 值以及可能的返回值
const rejectAnyLefts = function(eitherArray){
const leftObjs = r.filter(r.propEq("isLeft", true), eitherArray)
const isEmpty = r.propEq('length', 0)
return (isEmpty(leftObjs)) ?
Task.rejected(leftObjs) :
Task.of(eitherArray)
}