ZIO
不依赖于Cats
,因此它有自己的方法来执行sequence
操作: ZIO.sequencePar
和ZIO.sequence
.
我尝试使用sequence
interop 提供的Cats
,它的工作方式与以下相同ZIO.sequence
:
import zio._
import zio.interop.catz._
import cats.implicits._
val t1: Task[Int] = ???
val t2: Task[Int] = ???
val t3: Task[Int] = ???
val seq = List(t1,t2,t3).sequence // <-- t1,t2,t3 are executed sequentially
(new DefaultRuntime {}).unsafeRun(seq)
我可以让ZIO
Treat sequence
as ZIO.sequencePar
,所以我可以并行运行任务吗?
似乎ZIO
需要一些并行Traverse
的实现Cats
,但我找不到。
这是我的依赖项:
libraryDependencies += "dev.zio" %% "zio" % "1.0.0-RC10-1"
libraryDependencies += "dev.zio" %% "zio-interop-cats" % "2.0.0.0-RC1"
编辑:
在@AndreyTyukin 的帮助下,我发现要使其并行工作,我需要运行lib 中可用的typeclassList(k,k2,k3).parSequence
的使用实例。@LuisMiguelMejíaSuárez 对这个问题的评论解释了为什么我们必须使用.Parallel
zio-interop-cats
Parallel