选择两个异步期货中的第一个来完成

Xan*_*ros 1 monads scala

是否有scala组合器用于组合两个期货如下

val Comb[A]: (Future[A], Future[A]) => Future[A] = 
 (f1: Future[A], f2: Future[A]) => Future {
    if f1 succeeds before f2 then f1
    else f2
 }
Run Code Online (Sandbox Code Playgroud)

在完成之前丢弃第二个未来?

Jac*_*eow 5

Future.firstCompletedOf(...) 就是这样.

对于你想要做的事情:

def Comb[A](f1: Future[A], f2: Future[A]): Future[A] = 
   Future.firstCompletedOf(Seq(f1, f2))
Run Code Online (Sandbox Code Playgroud)