私は未来の結果をブロック操作なしで得たいと思っています。 私は「待つ」との私のコードを記述する場合、それは動作しますが、それがブロックしているので、それは私のために良いではありません。"await"を使わずにFutureの結果を得るには
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 [email protected] => r
case isNot => isNot
}
けどこのエラーがあります。
found : scala.concurrent.Future[org.specs2.matcher.MatchResult[Personne]]
[error] required: org.specs2.specification.create.InterpolatedFragment
「未来」のコンテキストにいるときは、待たずに出ることはできません。しかし、 'onComplete'を使って、準備ができたら結果を消費することができます。 – marstran
あなたの質問は一般的な先物ではなくspec2に関するようです。一般的には、 'fut.foreach'や' fut.map'を使って未来の値を扱うことができます。 –