2017-05-02 5 views
0

Ich habe ein Problem mit Scala Futures. Ich habe eine Funktion, die zwei Parameter benötigt: x: Future [Int] und y: Future [Int].Ausnahmebehandlung mit Scala-Futures

Die Funktion sollte eine Zukunft zurück, die mit vervollständigt:

  • Wert von x, wenn x erfolgreich abgeschlossen wurde,
  • Wert von y, wenn x ausfällt und y erfolgreich abgeschlossen wird,
  • der Ausnahme, dass y fehlgeschlagen wenn x fehlschlägt und y fehlschlägt.

Ich kann nicht herausfinden, wie dies zu tun ist. derzeit

Der Code:

def myFunction(x: Future[Int], y: Future[Int]): Future[Int] = { 
    x.onSuccess { 
    case result => return Future(result) 
    } 
    x.onFailure { 
    case e => 
     y.onSuccess { 
     case res => return Future(res) 
     } 
     y.onFailure { 
     case f => throw f 
     } 
    } 
} 

Antwort

3

einfach:

x.recoverWith { case _ => y } 
+0

Danke, genau das, was ich brauchte! – pythoner

+0

Froh, dass es geholfen hat. Bitte akzeptieren als Antwort :) –