ZIO不依赖于Cats,因此它有自己的方法来执行sequence操作: ZIO.sequencePar和ZIO.sequence.
我尝试使用sequenceinterop 提供的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)
我可以让ZIOTreat sequenceas 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 对这个问题的评论解释了为什么我们必须使用.Parallelzio-interop-catsParallel