【问题标题】:Get value from future从未来中获取价值
【发布时间】:2016-04-12 16:58:11
【问题描述】:

我有办法

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

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

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

【问题讨论】:

标签: scala future


【解决方案1】:

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

如果您确实想以非阻塞方式获得结果

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

【讨论】:

    【解决方案2】:

    Await.result:

    import scala.concurrent.Await
    import scala.concurrent.duration.DurationInt
    
    def getAll: Seq[User] = Await.result(seqAll, 5.seconds)
    

    【讨论】:

      猜你喜欢
      • 2020-08-12
      • 1970-01-01
      • 2017-10-19
      • 2013-04-11
      • 2020-11-07
      • 2018-09-14
      • 2021-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多