Ich bin derzeit ein bisschen mit der Logik der Zukunft Rückrufe in scala. Ich versuche, eine Methode zu erhalten, die Folgendes tun soll:Futures und Callbacks für die Änderung von Wert auf Variable
- schließt mit dem Wert x, wenn x mit dem Wert y erfolgreich
- schließt vervollständigt, wenn x ausfällt und schließlich
- schließt mit der Ausnahme, dass nicht y wenn x und y fehlschlägt.
Hier ist mein Code, die aus irgendeinem Grund nicht funktioniert:
def eitherF(x: Future[Int], y: Future[Int]): Future[Int] = {
var ret : Future[Int] = x
ret onComplete {
case Success(i) =>
case Failure(t) => ret = ret.flatMap(e => y)
}
ret
}
Wenn ret zurückgegeben wird es immer den Wert von x hat, es ist wie der onComplete Block vollständig ignoriert. Wie kann ich den Wert von ret abhängig von dem Ergebnis von x und y ändern?
Haben Sie die Ausnahme zurückkehren möchten oder die Ausnahme werfen? –
In Fall 3 möchte ich den gleichen Future y zurückgeben, der die Ausnahme verursacht hat. –