我试图从Akka演员那里收集未来自定义对象列表,这是我的代码:
var game_manager_backends: List[ActorRef] = List()
implicit val ec = context.dispatcher
val taskFutures: List[Future[Game]] = game_manager_backends map { gm_be =>
implicit val timeout = Timeout(5 seconds)
val result = gm_be ? GameStatus
}
val searchFuture = Future sequence taskFutures
searchFuture.onSuccess {
case results: List[Game] => origin ! results
}
此
game_manager_backends
是包含我想要问Game
个对象的所有actor的List,然后我想收集列表中的所有这些Game
对象并发送回原始actor,这个实现是给我map
行的错误:
type mismatch; found : List[Unit] required: List[scala.concurrent.Future[common.Game]]
我该如何解决这个问题?
由于
答案 0 :(得分:0)
您得到Unit
因为map
内部没有返回任何值(修正了上面提到的评论内容)。
?
请求akka返回Future[Any]
,但您希望Future[common.Game]
解决此问题 - 需要额外的映射。
result map {
case a@Game => a
}
答案 1 :(得分:0)
将val result = gm_be ? GameStatus
更改为val result = (gm_be ? GameStatus).mapTo[Game]
。您也不需要它是val
。