给定一个要被多次调用的函数A => IO[B]
(又名Kleisli[IO, A, B]
),并且有副作用,比如更新数据库,如何将这样的多次调用委托给一个流(我猜Pipe[IO, A, B]
)(fs2,monix observable/iterant)?这样做的原因是能够在一个时间窗口内累积状态、批量调用等。
更具体地说,http4s 服务器需要一个Request => IO[Response]
,所以我正在研究如何对流进行操作(为了上述好处),但最终为 http4s 提供了这样的功能。
我怀疑它在幕后需要一些相关 ID,我对此很好,我对如何从 FP 的角度安全和正确地进行操作更感兴趣。
最终,我期望的签名可能是这样的:
Pipe[IO, A, B] => (A => IO[B])
, 这样对 Kleisli 的调用就会通过管道传输。
作为事后的想法,是否有可能背压?