h-oikawa
3/28/2017 - 2:36 PM

From http://qiita.com/mtoyoshi/items/297f6acdfe610440c719

  val f1: Future[List[Int]] = Future.traverse((1 to 10).toList) { i =>
    Future { Thread.sleep(i * 100); i }
  }
  val f2: Future[List[Int]] = Future.traverse((11 to 20).toList) { i =>
    Future { Thread.sleep(i * 100); i }
  }

  val f: Future[List[Int]] = Future.fold(List(f1, f2))(List(10)){ (total, v) => v ++: total }
  f.onSuccess{ case result: List[Int] => println(result.sum) }

  Await.ready(f, Duration.Inf)