У меня есть следующий код:Динамически создать для понимания фьючерсов и ждать завершения
// Start async functions
val async1: Future[Seq[Int]] = ...
val async2: Future[Seq[Int]] = ...
val async3: Future[Seq[Int]] = ...
// Wait for completion
(for {
a1 <- async1
a2 <- async2
a3 <- async3
} yield (a1, a2, a3)).map {
// Use the results
}
Я хочу, чтобы улучшить это обрабатывать переменное количество асинхронными функций (и не обязательно называя каждого из них каждый раз) , То, что я сделал до сих пор является:
// Start the async functions ?
val asyncs: Seq[Future[Seq[Int]] = otherList.filter(x => someCondition).map(x => asyncFunc(x))
// Wait for the functions to finish ?
(for (seqInt <- asyncs) yield seqInt).map {
case results => // <-- problem here
// Use the results
}
Проблема, которую я имею, что результаты типа Future[Seq[Int]]
, но я ожидал, что они будут типа (Seq[Int], Seq[Int], Seq[Int])
как в первом фрагменте.
В конце концов, я хотел бы сделать, это зарезки динамического количества асинхронных функций, которые все имеют одинаковый типа возвращаемого Future
, ждать их все до конца, а затем использовать все их результаты вместе.
'Future.sequence (asyncs)' – cchantep