traverse
来自对象的方法Future
在第一次失败时停止。我想要这个方法的宽容/宽容版本,在发生错误时继续执行其余的序列。
目前,我们在 utils 中添加了以下方法:
def traverseFilteringErrors[A, B <: AnyRef]
(seq: Seq[A])
(f: A => Future[B]): Future[Seq[B]] = {
val sentinelValue = null.asInstanceOf[B]
val allResults = Future.traverse(seq) { x =>
f(x) recover { case _ => sentinelValue }
}
val successfulResults = allResults map { result =>
result.filterNot(_ == sentinelValue)
}
successfulResults
}
有一个更好的方法吗?