gpt4 book ai didi

scala - 我需要做些什么来移植 ReactiveMongo scala 以使用猫效果?

转载 作者:行者123 更新时间:2023-12-03 23:05:40 24 4
gpt4 key购买 nike

如果我想在 http4s 之类的东西中使用 ReactiveMongo 我必须将 ReactiveMongo 返回的所有 Future 调用包装在 Cats IO 效果中,这样说是否正确?
概括地说,将 ReactiveMongo 合并到 http4s 中需要哪些步骤?

最佳答案

猫效应提供Async类型类,可让您将一些回调(例如 Future 的 onComplete )转换为 F .一个 example from documentation :

import cats.effect.{IO, Async}

import scala.concurrent.ExecutionContext.Implicits.global
import scala.concurrent.Future

val apiCall = Future.successful("I come from the Future!")

val ioa: IO[String] =
Async[IO].async { cb =>
import scala.util.{Failure, Success}

apiCall.onComplete {
case Success(value) => cb(Right(value))
case Failure(error) => cb(Left(error))
}
}

ioa.unsafeRunSync()
实际上, Async[F] evan 有一种方法允许将 Future 提升为异步: Async[F].fromFuture(Sync[F].defer(future)) ( Future 被包裹在 IO 中,因为它的创建是有副作用的,并且会触发急切的计算)。
但是,如果您坚持使用 cats.effect.IO具体来说,您可以简单地使用 IO.fromFuture(IO(future)) .
您必须在需要将 Future 转换为 IO(或其他 F)的任何地方使用这个(或一些委托(delegate)给这个的实用程序)。

关于scala - 我需要做些什么来移植 ReactiveMongo scala 以使用猫效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62882044/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com