scala - [A,Future [B]]到Future [E [[A,B]]

标签 scala future

有没有办法转换一个

Either[A, Future[B]] 

到一个
Future[Either[A, B]]

我想到了类似Future.sequence方法的东西,该方法可以将List[Future]转换为Future[List]

最佳答案

不确定是否有开箱即用的解决方案,这就是我想出的解决方案:

def foldEitherOfFuture[A, B](e: Either[A, Future[B]]): Future[Either[A, B]] =
  e match {
    case Left(s) => Future.successful(Left(s))
    case Right(f) => f.map(Right(_))
  }

除了从Future捕获最终异常之外,您还可以添加recover并将其映射到Left:
case Right(f) => f.map(Right(_)).recover { case _ => Left(/** some error*/) }

关于scala - [A,Future [B]]到Future [E [[A,B]],我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33875230/

相关文章:

scala - 如何将源文件名添加到 Spark 中的每一行?

scala - 在 scala 中运行控制台命令

c++ - 在异步调用中将 shared_ptr 作为参数传递

java - Future<T> 与 Java Executor Service 中扩展 Task<T> 的类不兼容

scala - 如何在 Scala 中获得组合 future 的结果

grails - 如果超时,是否有任何方法可以获取 PromiseList 的结果

rust - 如何在稳定的 Rust 中同步返回在异步 Future 中计算的值?

scala - Scalaz 中 *> 和 <* 的用途是什么

scala - 避免在 play 框架的所有 scala 操作中执行相同的方法

scala - Spray Collection ToResponseMarshallable