Scala ZIO在并行操作中与CAT互操作
Scala ZIO在并行操作中与CAT互操作,scala,zio,Scala,Zio,ZIO不依赖于Cats,因此它有自己的方法来执行sequence操作:ZIO.sequencePar和ZIO.sequence 我尝试将interop提供的sequence与Cats一起使用,其工作方式与ZIO.sequence相同: import zio._ import zio.interop.catz._ import cats.implicits._ val t1: Task[Int] = ??? val t2: Task[Int] = ??? val t3: Task[Int]
ZIO
不依赖于Cats
,因此它有自己的方法来执行sequence
操作:ZIO.sequencePar
和ZIO.sequence
我尝试将interop提供的sequence
与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)
编辑:
在@AndreyTyukin的帮助下,我发现要使它并行工作,我需要运行List(k,k2,k3).parSequence
,它使用zio interop cats
库中提供的typeclassparallel
实例。@LuisMiguelMejíaSuárez对问题的评论给出了一些解释,解释了为什么我们必须使用并行
libraryDependencies += "dev.zio" %% "zio" % "1.0.0-RC10-1"
libraryDependencies += "dev.zio" %% "zio-interop-cats" % "2.0.0.0-RC1"