签出 interop-monix
模块以获得与 Monix 的互操作支持。
Contents
hide
转换 Task
互操作层提供对以下转换的支持:
- 将
Task[A]
转为UIO[Task[A]]
- 将
Task[A]
转为Task[A]
要将 IO
转换为 Task
,请使用以下方法:
def toTask: UIO[eval.Task[A]]
要执行反方向的转换,请使用以下定义在 IO 伴随对象中的扩展方法:
def fromTask[A](task: eval.Task[A])(implicit scheduler: Scheduler): Task[A]
请注意,为了将 Task
转换为 IO
,需要使用适当的 Scheduler
。
例子
import monix.eval.Task
import monix.execution.Scheduler.Implicits.global
import zio.{ IO, Runtime }
import zio.interop.monix._
object UnsafeExample extends App {
val runtime = Runtime.default
def main(args: Array[String]): Unit = {
val io1 = IO.succeed(10)
val t1 = runtime.unsafeRun(io1.toTask)
t1.runToFuture.foreach(r => println(s"IO to task result is $r"))
val t2 = Task(10)
val io2 = IO.fromTask(t2).map(r => s"Task to IO result is $r")
println(runtime.unsafeRun(io2))
}
}
转换 Coeval
要将 IO
转换为 Coeval
,请使用以下方法:
def toCoeval: UIO[eval.Coeval[A]]
要执行反方向的转换,请使用以下定义在 IO 伴随对象中的方法:
def fromCoeval[A](coeval: eval.Coeval[A]): Task[A]
例子
import monix.eval.Coeval
import zio.{ IO, Runtime }
import zio.interop.monix._
object UnsafeExample extends App {
val runtime = Runtime.default
def main(args: Array[String]): Unit = {
val io1 = IO.succeed(10)
val c1 = runtime.unsafeRun(io1.toCoeval)
println(s"IO to coeval result is ${c1.value}")
val c2 = Coeval(10)
val io2 = IO.fromCoeval(c2).map(r => s"Coeval to IO result is $r")
println(runtime.unsafeRun(io2))
}
}