すべてのDB呼び出しはすぐに返されます Futures 、たとえ彼らが彼らの操作を終えていなくても。これは非同期であり、同期ではありません。
Futuresに対応するようにコードを変更できます 2つの方法のいずれかで:
-
Await.resultを使用できます すべてのDB呼び出しで、完了するまでその時点で待機します。例:Await.result(db.run(insertEffect), Duration.Inf) -
.mapを使用できます (または.flatMap別のFutureを使用している場合 内から)、DB操作が完了したときに実行するコードを使用します。例:db.run(insertEffect).map(_ => ... do stuff... )
別のスタックオーバーフローをご覧ください