私はこの方法を書きました:
import scala.concurrent._
import ExecutionContext.Implicits.global
import scala.util.{ Success, Failure }
object FuturesSequence extends App {
val f1 = future {
1
}
val f2 = future {
2
}
val lf = List(f1, f2)
val seq = Future.sequence(lf)
seq.onSuccess {
case l => println(l)
}
}
Future.sequence が List[Future] を Future[List] に収集し、すべての先物 (私の場合は f1 と f2) が完了するのを待ってから、Future[List] seq で onSuccess を呼び出すことを期待していました。
しかし、このコードを何度も実行すると、「List(1, 2)」がたまにしか出力されず、期待どおりに動作しない理由がわかりません。