Scala Future中的成功方法

时间:2016-08-09 23:14:44

标签: scala future

我有未来计算一些计算,我想得到结果。我必须使用变体Await.result(...)(它工作正常)。但是 onSuccess  在Future中的方法,但它不能确保我在计算完成之前获取结果。在Future中使用onSuccess方法的目的和范围是什么?

2 个答案:

答案 0 :(得分:3)

onSuccess无阻塞。

val f = Future { Thread.sleep(1000) }
f.onSuccess { case _ => println("success" }
println("before success")

这将输出:

before success
success
未来成功完成后,

onSuccess将始终执行。这种方法的主要优点是,您可以在等待未来完成的同时继续前进并做其他事情。

使用Await.result,在Future完成之前,它不会转到下一行。

答案 1 :(得分:0)

它是一种异步方法,并利用控制反转。这意味着当您的Future完成时,可以处理结果。您也可以将最终计算放入Futures onSuccess中,并且只有在结果存在时才会计算出来。如果您需要在某处返回结果,而不是通过回调,例如,您需要等待Future或者只需返回它并在需要时处理它的结果。