Im folgenden Code muss ich das Ergebnis einer Zukunft, die nach einer anderen Zukunft aufgerufen wird, zurückgeben. Ich erhalte den folgenden Fehler in der future2.map
Zeile:Rückkehr der Zukunft der Zukunft im Spiel für Scala
Typ Mismatch; gefunden: scala.concurrent.Future [play.api.mvc.Result] erforderlich: play.api.mvc.Result
Wie diese Arbeit machen?
def method1 = Action.async { request =>
val future1 = f1
future1.map { result1 =>
val future2 = f2
future2.map { result2 =>
Ok(result1+result2+"")
}
}
}
def f1 = Future { 1 }
def f2 = Future { 2 }
Ansatz 2 fügt eine unnötige Schicht von Komplexität durch das Ergebnis in einem erfolgreichen 'Future' umgibt. Obwohl Sie es tun können, gibt es absolut keinen Grund, diesen über den ersten zu bevorzugen. – Eric
Ja, ich stimme zu. Ich habe versucht, verschiedene Wege aufzuzeigen, wie 'map' und' flatMap' mit Zukunft funktionieren. Und 'Future.successful()' ist unvermeidlich, wenn wir mehrere Fälle innerhalb zukünftiger Berechnungen behandeln müssen, wobei ein Fall einen 'Zukunft (Wert)' zurückgibt und der andere Fall gibt nur "Wert" zurück. – oblivion