【发布时间】:2015-08-25 03:06:36
【问题描述】:
我有一些 scala 期货。我可以轻松地与Future.sequence 并行运行它们。我也可以像这样一个接一个地运行它们:
def serFut[A, B](l: Iterable[A])(fn: A ⇒ Future[B]) : Future[List[B]] =
l.foldLeft(Future(List.empty[B])) {
(previousFuture, next) ⇒
for {
previousResults ← previousFuture
next ← fn(next)
} yield previousResults :+ next
}
(描述为here)。现在假设我想稍微 并行运行它们 - 即限制最多m 一次运行。上面的代码针对m=1 的特殊情况执行此操作。对于一般m,是否有一种很好的 scala 惯用方式?那么对于额外的实用程序,在例程中实现终止开关的最优雅的方法是什么?我可以即时更改m 吗?
我自己的解决方案不断将我带回程序代码,在 scala 优雅旁边感觉相当懦弱。
【问题讨论】:
标签: scala parallel-processing future