Alle DB-opkald vender tilbage til dig med det samme med Futures
, selvom de ikke er færdige med deres operationer. Dette er asynkront ikke synkront.
Du kan ændre din kode, så den passer til Futures
på en af to måder:
-
du kan bruge
Await.result
med alle DB-kald, at vente på det tidspunkt, indtil de er færdige, for eksempel:Await.result(db.run(insertEffect), Duration.Inf)
-
du kan bruge
.map
(eller.flatMap
hvis du bruger en andenFuture
indefra), med kode, som du vil køre, når DB-handlingen er fuldført. For eksempel:db.run(insertEffect).map(_ => ... do stuff... )
Se endnu et Stack Overflow tråd vedrørende undtagelsen med nogle ideer om årsagen.