是否有等效于mapAsync()
的方法,但适用于filter
?
以下是使用伪代码的示例:
val filter: T => Future[Boolean] = /.../
source.filter(filter).runWith(/.../)
^^^^^^
谢谢
答案 0 :(得分:3)
我认为没有Flow
或Source
的直接方法具有您要查找的功能,但是可用方法的组合将为您提供所需的内容:< / p>
def asyncFilter[T](filter: T => Future[Boolean], parallelism : Int = 1)
(implicit ec : ExecutionContext) : Flow[T, T, _] =
Flow[T].mapAsync(parallelism)(t => filter(t).map(_ -> t))
.filter(_._1)
.map(_._2)