【发布时间】:2018-04-07 00:20:52
【问题描述】:
我正在使用以下代码学习 Scala Future:
object DangerousAndSlowService {
def queryNextNumber: Long = {
50
}
}
val number1F = Future { DangerousAndSlowService.queryNextNumber }
number1F.onComplete({
case Success(value) => {
println(s"Got the callback, meaning = $value")
}
case Failure(exception) => {
exception.printStackTrace
}
})
但是,从不打印“50”。 已经花了几个小时,但仍然无法弄清楚。
谢谢。
【问题讨论】:
-
这段代码是从哪里运行的?从主方法内部?
-
你需要等待结果(阻塞当前线程)。检查此答案,您可以将其应用于您的示例:stackoverflow.com/a/49680248/5794617
-
与"How do I wait for a Scala future's onSuccess callback to complete?" 不完全重复,问题在于另一个
Thread.sleep。 -
值得注意的是,只有在程序实际上可能在运行
Future之前终止时才需要阻塞。如果运行此代码,例如在 Play 应用程序中,Future应该会运行,即使您没有阻止并等待它
标签: scala