我正在运行一个简洁的查询,并使用此辅助方法成功获得了结果:
def exec[T](action: DBIO[T]): T = Await.result(db.run(action), 2.seconds)
我正在尝试实施无阻塞期货,per the Slick docs:
def execFuture[T](program: DBIO[T]) = db.run(program)
val futureTest = execFuture ( maxInStockVal.result ).onComplete {
case Success(x) => x
case Failure(e) => e
}
Logger.debug(futureTest.toString)
我得到的结果是空的。我想念什么?
答案 0 :(得分:1)
如果要打印结果,则应将打印内容放在onComplete
内,就像文档说的那样:
f.onSuccess { case s => println(s"Result: $s") }
在该函数之外,您无权访问结果,因为内部代码是异步运行的,因此您应该使用maps
,reduces
和其他东西来使结果起作用,并始终起作用与Futures。