#scala #concurrency #parallel-processing
Вопрос:
Учитывая два фьючерса f1 и f2, я пытаюсь вернуть тот, который завершит свое выполнение первым, используя этот метод:
def first[A](f1: Future[A], f2: Future[A]): Future[A] = ???
В качестве примера реализации обещание используется для получения первого будущего, которое завершит свои вычисления, что-то вроде этого:
def first[A](f1: Future[A], f2: Future[A]): Future[A] =
val promise = Promise[A]()
f1.onComplete(result1 => promise.tryComplete(result1))
f2.onComplete(result2 => promise.tryComplete(result2))
promise.future
Но мне было интересно, есть ли какой-либо другой подход к этой проблеме, который не использует этот onComplete()
метод? (например, map()
flatMap()
вместо этого используйте методы или).
Как будет выглядеть эта реализация?
Вот и все, большое спасибо за помощь! Я новичок в этой теме будущего в Scala, поэтому я немного борюсь с этим. Хорошего дня!
Комментарии:
1. fisrtCompletedOf() ?
2. Как я всегда говорю, Скальдок — твой друг.