【发布时间】:2017-06-08 23:54:28
【问题描述】:
我想在不阻塞操作的情况下获得 Future 的结果。 如果我用“await”编写代码,它可以工作,但对我不利,因为它会阻塞:
val t: Future[MatchResult[Personne]] = db.getPersonne(userId).map(_.get must beEqualTo(personne))
t.await
我尝试使用map 更改我的代码:
val r: Future[MatchResult[Personne]] = db.getPersonne(userId).map(_.get must beEqualTo(personne))
r.map {
case r@isWhatIExpected => r
case isNot => isNot
}
但我有这个错误:
发现: scala.concurrent.Future[org.specs2.matcher.MatchResult[Personne]]
[错误] 必需:org.specs2.specification.create.InterpolatedFragment
【问题讨论】:
-
当您处于
Future上下文中时,不等待就无法摆脱它。但是,您可以使用onComplete在结果准备好时使用它。 -
您的问题似乎是关于 spec2 而不是一般的期货。一般来说,您可以使用
fut.foreach或fut.map继续处理未来的价值观。
标签: scala asynchronous future specs2