Фьючерс / Успех гонки

Я изучаю фьючерсы, и я пытаюсь создать метод, который принимает два фьючерса в качестве параметра (f а такжеg) и вернуть первое будущее, которое было успешно завершено, в противном случае оно возвращаетсяf или жеg.

Вот некоторые примеры использования моего метода:

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)

Итак, я создал этот метод:

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
}

А теперь, как я могу узнать, какой из них закончен первым?

Ответы на вопрос(3)

Ваш ответ на вопрос