有人建议我在拉取请求审查时使用Future[Book]而不是Future[Try[Book]]。
为什么会这样呢?
如果我使用Future[Book],那么我如何转换成功或失败。这对我来说一点都不清楚。
如果我们使用FutureBook,我们将完全失去在Scala中成功和失败的概念。
发布于 2021-01-21 06:07:23
在Scala中,未来的结果值被包装在Success或Failure类型中,后者是Try的一种类型。因此,Future中的值始终是一个Try类型的实例:Success或Failure。
因为这些都是Try类型,所以您可以在接受Try类型的future上注册一个回调。一个例子是使用onComplete,它接受Try[T] => U类型的回调函数并返回一个Unit。
import scala.util.{Success, Failure}
val f: Future[List[String]] = Future {
session.getUserNamesFromDatabase
}
f onComplete {
case Success(users) => for (user <- users) println(user)
case Failure(t) => println("An error has occurred: " + t.getMessage)
}在将来回调的好处是它可以在不阻塞客户端的情况下完成。因此,回调可以完全异步执行。
注意:指出onComplete方法具有unit返回类型。所以它不能被链接。
https://stackoverflow.com/questions/65800556
复制相似问题