title: Waiting on a list of futures VS Waiting on individual futures
body: <p>I am trying to understand the pros and cons - if any - of the following two approaches</p>
  <pre><code>  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(_ =&gt; doSomething)
    }
  
    Await.result(oneBigFuture, 10.seconds)
  
    // Wait on the individual futures created by the doSomething() method
    (1 to 1000).foreach {
      _ =&gt;
        val individualFuture = doSomething()
        Await.result(individualFuture, 10.seconds)
    }
  </code></pre>
  <p>What is the benefit of creating one big list of futures and submitting this to the <code>result</code> method instead of submitting the individual <code>Future</code>s produced by the <code>doSomething()</code> method to the <code>result</code> method?</p>
  <p>Obviously the first approach creates a batch operation but I am not sure if the compiler converts the second approach into a batch operation as well - since it's wrapped around a <code>foreach</code> statement.</p>