在Scala中从Future获取数据

时间:2014-06-04 02:42:04

标签: scala future

我已经Future[List[Person]] [1],我希望从中获取List[Person]。我该怎么办?

import scala.concurrent.Future
val futPersons : Future[List[Person]] = .... 

2 个答案:

答案 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
}