用akka-stream过滤异步

时间:2018-06-20 14:50:50

标签: akka-stream

是否有等效于mapAsync()的方法,但适用于filter

以下是使用伪代码的示例:

val filter: T => Future[Boolean] = /.../

source.filter(filter).runWith(/.../)
       ^^^^^^

谢谢

1 个答案:

答案 0 :(得分:3)

我认为没有FlowSource的直接方法具有您要查找的功能,但是可用方法的组合将为您提供所需的内容:< / 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)