den Code unten vor:Extrahierung der Zukunft in Akka HTTP
class TestActor extends Actor {
def receive = {
case "hello" =>
sender ! Future {
"Sample future result"
}
}
}
ich die unten Route definiert haben:
def r5: Route = {
pathPrefix("check") {
onSuccess(system.actorOf(Props[TestActor]).ask("hello")) {
successResult =>
complete {
"The result is " + successResult
}
}
}
}
Wenn ich die Strecke zugreifen, bekomme ich die Ausgabe als The result is Success(Sample future result)
, während ich es erwartet zu sein The result is Sample future result
. Aus der Dokumentation here über onSuccess:
Wertet seine Parameter vom Typ Zukunft [T], und sobald die Zukunft hat erfolgreich abgeschlossen worden ist, extrahiert das Ergebnis als Wert vom Typ T und leitet sie an den inneren Weg .
und das Beispiel gegeben ist:
val route =
path("success") {
onSuccess(Future { "Ok" }) { extraction =>
complete(extraction)
}
}
Also, wo soll ich falsch?
ich völlig vergessen haben, dass die Renditen eine Zukunft fragen! Mein Fehler! – codingsplash