我已经Future[List[Person]]
[1],我希望从中获取List[Person]
。我该怎么办?
import scala.concurrent.Future
val futPersons : Future[List[Person]] = ....
答案 0 :(得分:8)
有多种方式:
futPersons.map { personList =>
....
}
此地图会返回另一个Future
,其中包含您从地图返回的任何内容。仅当将来成功完成时,映射才会执行。如果您需要处理失败,可以使用onComplete
futPersons.onComplete {
case Success(personList) => ...
case Failure(exception) => ...
}
或者您可以等待将来完成(这是阻止):
val personList: List[Person] = Await.result(futPersons, 1 minutes)
答案 1 :(得分:1)
使用Await.result
阻止方式(暂停线程直到获得值):
scala.concurrent.Await.result(futPersons, timeout)
或者,使用onSuccess
回调:
futPersons onSuccess {
case persons => // do something with persons
}