Ich möchte meinen Codevereinfachen, um es so einfach wie möglich zu machen.Wie vereinfacht man die zukünftige Ergebnisbehandlung in Akka/Futures?
Hier ist der Code
case object Message
class SimpleActor extends Actor {
def receive = {
case Message => sender ! Future { "Hello" }
}
}
object SimpleActor extends App {
val test = ActorSystem("Test")
val sa = test.actorOf(Props[SimpleActor])
implicit val timeout = Timeout(2.seconds)
val fRes = for {
f <- (sa ? Message).asInstanceOf[Future[Future[String]]]
r <- f
} yield r
println {
Await.result(fRes, 5.seconds)
}
}
Ist es möglich, diesen Teil
.asInstanceOf[Future[Future[String]]]
loswerden?
Sie meinen, ich Funktion ändern müssen erhalten zu 'def erhalten = {. Fall Message => Future ("Hallo") pipeTo (Sender)}' und map Ergebnis in for-comp wie folgt 'for {f <- (sa? Nachricht) .mapTo [String]} yield f', oder? – Finkelson
@Finkelson ja, im Wesentlichen. 'pipeTo' macht die Nachricht" abgeflacht ", so dass Sie nur eine' Zukunft' erhalten. – wheaties
Nun, es ist interessant. Vielen Dank. – Finkelson