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?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage