Я изучаю будущее, и я пытаюсь создать метод, который, взять два фьючерсные как параметр (f
и g
) и вернуть первое будущее, который был успешно завершен, в противном случае она возвращает f
или g
.Futures/Успех гонка
В некоторых случаях используют для иллюстрации поведения моего метода:
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
}
А теперь, как я могу знать, какой из них завершен первый?
Вы видите это, пожалуйста? http://pastebin.com/2yqDHN5t. С тем, что я описываю, он должен вернуть будущее g, потому что будущий f терпит неудачу, с помощью вашего метода он пытается выполнить обещание с будущим, которое завершается первым, но на него не волнует, если он потерпел неудачу или нет. – user2336315
Ответ не соответствует вопросу –