Tous les appels DB vous reviendront immédiatement avec Futures
, même s'ils n'ont pas terminé leurs opérations. Ceci est asynchrone et non synchrone.
Vous pouvez modifier votre code pour tenir compte des Futures
de l'une des deux manières :
-
vous pouvez utiliser
Await.result
avec tous les appels de base de données, pour attendre à ce stade jusqu'à ce qu'ils se terminent, par exemple :Await.result(db.run(insertEffect), Duration.Inf)
-
vous pouvez utiliser
.map
(ou.flatMap
si vous utilisez un autreFuture
de l'intérieur), avec le code que vous souhaitez exécuter lorsque l'opération de base de données est terminée. Par exemple :db.run(insertEffect).map(_ => ... do stuff... )
Jetez un œil à un autre débordement de pile fil concernant l'exception avec quelques idées quant à la cause.