Alle DB-oproepen zullen onmiddellijk naar u terugkeren met Futures
, zelfs als ze nog niet klaar zijn met hun operaties. Dit is asynchroon, niet synchroon.
U kunt uw code wijzigen om tegemoet te komen aan de Futures
op een van de volgende twee manieren:
-
u kunt
Await.result
. gebruiken met alle DB-aanroepen, om op dat moment te wachten totdat ze zijn voltooid, bijvoorbeeld:Await.result(db.run(insertEffect), Duration.Inf)
-
u kunt
.map
. gebruiken (of.flatMap
als je een andereFuture
. gebruikt van binnenuit), met code die u wilt uitvoeren wanneer de DB-bewerking is voltooid. Bijvoorbeeld:db.run(insertEffect).map(_ => ... do stuff... )
Kijk eens naar een andere Stack Overflow draad met betrekking tot de uitzondering met enkele ideeën over de oorzaak.