如何中断、退出 compose 或 pipe?

How to interrupt, exit a compose or pipe?

中断一长串组合或管道函数的正确方法是什么?

假设链在第二个函数之后不需要 运行,因为它发现了一个无效值,并且只要用户提交的值无效,它就不需要继续接下来的 5 个函数。

你是否 return 未定义/空参数,所以其余函数只是检查是否没有值 returned,在这种情况下只是继续传递空参数?

我认为没有通用的处理方法。

通常在使用 algebraic data types 时,定义了一些东西,这样即使您想要的数据不存在,您也可以继续 运行 函数。例如,这是 MaybeEither 等类型的极其有用的功能之一。

但是 compose 或相关函数的大多数版本都没有为您提供早期转义机制。 Ramda 肯定不会。

虽然从技术上讲您无法退出管道,但您可以在管道内使用 pipe(),因此您没有理由不能对 'exit'(return从管道或踢到另一个管道):

pipe(
  // ... your pipeline 
  propOr(undefined, 'foo'), // - where your value is missing
  ifElse(isNil, always(undefined), pipe(
    // ...the rest of your pipeline
  ))
)