Вы можете использовать метод Future.sequence
, чтобы выполнить преобразование из List[Future[Map[_, _]]]
в Future[List[Map[_, _]]]
, а затем объединить карты, используя функцию Reduce в списке, и передать ей свою собственную функцию объединения.
Пример:
val list = List(m1, m2, m3)
def merge(first: Map[String, Int], second: Map[String, Int]): Map[String, Int] = {
first ++ second.map { case (k, v) => (k, v + first.getOrElse(k, 0)) }
}
Future.sequence(list).map(_.reduce(merge _)) // will produce Future(Map(A -> 2, B -> 1, C -> 6, D -> 1))