从未来获取价值

Get value from future

我有方法

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

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

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

Await.result:

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

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

你可以使用 Await.result 但这意味着 Future 是阻塞的而不是异步的,这就失去了使用 future 的意义。当然,阻塞对您来说可能不是问题。

如果您确实想以非阻塞方式获得结果,您可以这样做

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