cats-effect:如何将 `List[IO]` 转换为 `IO[List]`

cats-effect: How to transform `List[IO]` to `IO[List]`

我创建了一个 IO[Unit] 的列表,以便从 URL 的列表中检索数据。但是现在我如何将它转换回单个 IO[Unit] ?

您可以通过以下方式进行

val x: List[IO[Unit]] = ???

import cats.implicits._

val y: IO[List[Unit]] = x.sequence

val z: IO[Unit] = y.map(_ => ())

这只是 Dmytro 已经说过的内容的补充,您实际上可以使用 traverse_sequence_ 一步完成。如果您不关心结果,这两种方法都非常有用。代码如下所示:

import cats.implicits._

val x: List[IO[Unit]] = ???

val y: IO[Unit] = x.sequence_