Futures / Erfolgsrennen
Ich lerne Futures und versuche, eine Methode zu erstellen, die zwei Futures als Parameter verwendet (f
undg
) und geben Sie die erste Zukunft zurück, die erfolgreich abgeschlossen wurde, andernfalls wird sie zurückgegebenf
oderg
.
Einige Anwendungsfälle zur Veranschaulichung des Verhaltens meiner Methode sind:
Future 1 | Future 2 | Result
Success First Success Second Future 1
Success First Failure Second Future 1
Success Second Success First Future 2
Success Second Failure First Future 1
Failure First Failure Second Future 2 (because we had a failure on Future 1, so try to see what is the result Future 2)
Also habe ich diese Methode erstellt:
def successRace(f: Future[T], g: Future[T]): Future[T] = {
val p1 = Promise[T]()
val p2 = Promise[T]()
val p3 = Promise[T]()
p1.completeWith(f)
p2.completeWith(g)
p3. ????
p3.future
}
Und jetzt, woher kann ich wissen, welche zuerst abgeschlossen wurde?