展平';反应性';Scala中的调用结果

展平';反应性';Scala中的调用结果,scala,future,reactive-programming,Scala,Future,Reactive Programming,通过反复链接异步调用,我最终得到了这种糟糕的类型: Seq[Future[Option[Future[T]]]] 是否有办法将其简化为更易于管理的: Future[Seq[T]] 例如: def simplify[T](x: Seq[Future[Option[Future[T]]]]): Future[Seq[T]] = ??? 避免像这样使用wait?: def simplify[T](arg: Seq[Future[Option[Future[T]]]]):Future[Seq[T]

通过反复链接异步调用,我最终得到了这种糟糕的类型:

Seq[Future[Option[Future[T]]]]
是否有办法将其简化为更易于管理的:

Future[Seq[T]]
例如:

def simplify[T](x: Seq[Future[Option[Future[T]]]]): Future[Seq[T]] = ???
避免像这样使用
wait

def simplify[T](arg: Seq[Future[Option[Future[T]]]]):Future[Seq[T]] = {
  val seq: Future[Seq[Option[Future[T]]]] = Future.sequence(arg)
  val ret1 = seq.map { seq => Future.sequence(seq.flatten)}
  ret1.flatMap(identity)
}

谢谢我想出了一个更简洁(尽管相当神秘):Future.sequence(x.map(u.flatte).flatMap(Future.sequence(u))