从未来获得价值

时间:2016-04-12 08:50:37

标签: scala future

我有方法

def seqAll: Future[Seq[User]] = dbConfig.run(users.result)

def getAll: Seq[User] = Users.seqAll.map(a=>a)

第二种方法实际返回Future[Seq[User]],但我希望它只是Seq[User]。我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:5)

您可以使用Await.result,但这意味着使Future阻止而不是异步,这会消除使用未来的意义。当然,阻止对你来说可能不是问题。

如果你想以非阻塞方式获得结果,那么

Users.seqAll.map(a=>a) onComplete {
  case Success(result) => // use result for something
  case Failure(t) => // Handle error
}

答案 1 :(得分:1)

使用Await.result

import scala.concurrent.Await
import scala.concurrent.duration.DurationInt

def getAll: Seq[User] = Await.result(seqAll, 5.seconds)