ScaralaのFuturesの周りに脳をゆっくりと包み込み、私が解こうとしているレイヤーケーキを少し持ちます。Scala Futuresで迷子になる
DeferredResolver
はsangria-graphql + akkaです。デモコードを盗まれました。
Future.fromTry(Try(
friendIds map (id => CharacterRepo.humans.find(_.id == id) orElse CharacterRepo.droids.find(_.id == id))))
を追加し、独自の変更を加えました。鉱山は、他の俳優の何かを尋ねるのに対して彼らは、メモリ内の検索を行います。
Future.fromTry(Try(
accountIds match {
case h :: _ =>
val f = sender ? TargetedMessage(h)
val resp = Await.result(f, timeout.duration).asInstanceOf[TargetedMessage]
marshallAccount(resp.body)
case _ => throw new Exception("Not found")
}
))
ここで関連作品は、私は、リストの最初の要素を選ぶ、私は他の場所だActorRef
に送信して待つということです結果。これは機能します。私がやりたい何か、しかし、ここでは結果を待つが、これは動作しませんFuture
Future.fromTry(Try(
accountIds match {
case h :: _ =>
sender ? TargetedMessage(h) map {
case resp:TargetedMessage => marshallAccount(resp.body)
}
case _ => throw new Exception("Not found")
}
))
として全体のことを返す必要がされていません。これが消費されている場合、代わりにタイプAccount
機能marshallAccount
の(戻り値の型のもので、それはタイプの約束だ。私が正しく理解していれば代わりにFuture[Account]
の戻り値の型を有するので、それは、これはFuture[Future[Account]]
の種類を持っていますので、 ?どのように私はあなたが間違っているAPIメソッドを見ている