mar*_*iii 0 monads scala future scala-cats tagless-final
我正在与 Slick 和 Cats 合作。
database.run返回 a Future,但我需要我的类的方法(泛型 on F[_]: Async)来返回 monad F。我可以让它像这样工作
val future = database.run(insertion)
val result = Await.result(future, Duration.Inf)
Async[F].delay(result)
Run Code Online (Sandbox Code Playgroud)
但这肯定不是应该做的方式,因为它阻塞了线程。
有没有合适的方法来做到这一点?
Async.fromFuture是你所需要的。
与往常一样,scaladoc是您的朋友。
import cats.effect.{Async, ContextShift]
def foo[F[_] : Async : ContextShift]: F[Result] =
Async.fromFuture(Async[F].delay(database.run(insertion)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
362 次 |
| 最近记录: |