我正在斯卡拉的期貨周圍慢慢地包裹着我的大腦,並有一點點的蛋糕正在嘗試解開。在斯卡拉期貨迷路
具體使用案例是 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]]
如何拉平這個