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

时间:2017-07-13 14:33:07

标签: scala monads

是否有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
 }

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

1 个答案:

答案 0 :(得分:5)

Future.firstCompletedOf(...)就是这样做的。

对于你想要做的事情:

def Comb[A](f1: Future[A], f2: Future[A]): Future[A] = 
   Future.firstCompletedOf(Seq(f1, f2))