Future.foreach
означает «вызов следующего кода после успешного завершения Future
». Таким образом, println
будет вызываться только после завершения mySeq
. Это может произойти до вызова Future(1)
, но не может.
Обратите внимание, что Future(Seq(1,2,3,4))
выполняется асинхронно, даже если результат является константой. Если вы замените это на Future.successful(Seq(1,2,3,4))
, то это немедленно завершится , а println
произойдет до Future(1)
. Однако последующий вызов foreach
все еще асинхронный и может завершиться после Future(1)
(Спасибо Тило за исправление)