首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scala中的未来[Try[Book]]与Future[Book]?

Scala中的未来[Try[Book]]与Future[Book]?
EN

Stack Overflow用户
提问于 2021-01-20 06:38:23
回答 1查看 71关注 0票数 1

有人建议我在拉取请求审查时使用Future[Book]而不是Future[Try[Book]]

为什么会这样呢?

如果我使用Future[Book],那么我如何转换成功或失败。这对我来说一点都不清楚。

如果我们使用FutureBook,我们将完全失去在Scala中成功和失败的概念。

EN

回答 1

Stack Overflow用户

发布于 2021-01-21 06:07:23

在Scala中,未来的结果值被包装在SuccessFailure类型中,后者是Try的一种类型。因此,Future中的值始终是一个Try类型的实例:SuccessFailure

因为这些都是Try类型,所以您可以在接受Try类型的future上注册一个回调。一个例子是使用onComplete,它接受Try[T] => U类型的回调函数并返回一个Unit

代码语言:javascript
复制
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返回类型。所以它不能被链接。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65800556

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档