【发布时间】:2015-08-15 01:17:22
【问题描述】:
我想知道如何将List[Future[String\/String]] 转换为Future[String\/String]。
其实我只是想申请列表EitherT.apply的每个元素。
我想要的是这样的:
val result: EitherT[Future, String, String] =
for{
_ <- EitherT.apply(fun(arg1))
_ <- EitherT.apply(fun(arg2))
res <- EitherT.apply(fun(arg3))
} yield res
result.run
// ...
def fun(arg1: MyType): Future[String\/String] = ...
在本例中,我想将函数 fun 和函数 fun 的参数列表(包含 n 个元素)设置为输入(此处为:List(arg1, arg2, arg3))。
但我不知道如何使用 Futures 进行管理。 是否可以保持异步?
【问题讨论】:
-
Future.sequence可以做到。 -
我认为你在输出类型中忘记了一些东西 - 你输入了
List但你只得到了一个元素? -
谢谢! @GáborBakos Future.sequence 很好,但是表演呢? @lmm 事实上,我只想一个接一个地检查列表中
funforeach 元素的结果。如果一个返回左(失败)返回这个,否则返回 \/-("Ok")。我找到了一种方法。看我的回答。
标签: scala future scalaz monad-transformers either