scala - Scala 中压平 'reactive' 调用结果

标签 scala future reactive-programming

通过重复链接异步调用,我最终得到了这种可怕的类型:

Seq[Future[Option[Future[T]]]]

有没有办法将其简化为更易于管理:

Future[Seq[T]]

如:

def simplify[T](x: Seq[Future[Option[Future[T]]]]): Future[Seq[T]] = ???

避免使用Await

最佳答案

像这样:

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)
}

关于scala - Scala 中压平 'reactive' 调用结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25121143/

相关文章:

r - Shiny 的 promise future 不适用于 eventReactive

java - 如何使用 CompletableFuture.thenComposeAsync()?

dart - Dart 在构造函数上等待

spring-boot - Spring Webflux : Extract value from Mono

scala - IntelliJ 使用具有 bool 属性的 scalatags 显示错误

scala - 如何在 sbt 中检测 JavaFX 运行时 jar

scala - 类型类和依赖类型

scala - 组合两个def后展平类型

javascript - 如何观察对象的方法返回的属性变化

haskell - react 香蕉 react 来检索小部件 textCtrl 值,如 textCtrlGetValue