Я пытаюсь понять плюсы и минусы - если таковые имеются - следующих двух подходов
def doSomething(): Future[Unit] = ???
// Create one big list of futures and wait on this future
private val oneBigFuture: Future[immutable.IndexedSeq[Unit]] = Future.sequence {
(1 to 1000).map(_ => doSomething)
}
Await.result(oneBigFuture, 10.seconds)
// Wait on the individual futures created by the doSomething() method
(1 to 1000).foreach {
_ =>
val individualFuture = doSomething()
Await.result(individualFuture, 10.seconds)
}
Какая польза от создания одного большого списка фьючерсов и отправки его методу result
вместо отправки отдельных Future
s, созданных методом doSomething()
, методу result
?
Очевидно, что первый подход создает пакетную операцию, но я не уверен, преобразует ли компилятор второй подход в также пакетная операция - поскольку она обернута вокруг оператора foreach
.