所有的期货最终可能会成功(有些可能会失败),但我们希望第一个成功。并希望将这一结果表示为未来。如果列表中的所有期货都失败,则此期货将失败。
正如所指出的,提供了文档Future.firstCompletedOf
。
import scala.concurrent.{ExecutionnContext, Future }
def foo[T](f: => Seq[Future[T]])(implicit ec: ExecutionContext): Future[T] =
Future.firstCompletedOf(f)
Run Code Online (Sandbox Code Playgroud)