Scala Future 中的成功方法
Method onsuccess in Scala Future
我有未来可以计算一些计算,我想得到结果。我必须使用变体 Await.result(...) (它工作正常)。但是有 onSuccess
Future 中的方法,但它不能确保我在计算完成之前获取结果。在 Future 中使用 onSuccess 方法的目的和范围是什么?
这是一种异步方法,利用了控制反转。这意味着当您的 Future 完成时,可以处理结果。您还可以将最终计算放入 Futures onSuccess 中,只有当结果存在时,才会计算它。如果您需要在某个地方 return 结果而不是通过回调,例如您需要等待 Future 或简单地 return 它并在需要的地方处理它的结果。
onSuccess
是非阻塞的。
val f = Future { Thread.sleep(1000) }
f.onSuccess { case _ => println("success" }
println("before success")
这将输出:
before success
success
onSuccess
将始终在未来成功完成时执行。这种方法的主要优点是您可以在等待 future 完成的同时继续做其他事情。
对于 Await.result
,在 Future
完成之前不会移动到下一行。
我有未来可以计算一些计算,我想得到结果。我必须使用变体 Await.result(...) (它工作正常)。但是有 onSuccess Future 中的方法,但它不能确保我在计算完成之前获取结果。在 Future 中使用 onSuccess 方法的目的和范围是什么?
这是一种异步方法,利用了控制反转。这意味着当您的 Future 完成时,可以处理结果。您还可以将最终计算放入 Futures onSuccess 中,只有当结果存在时,才会计算它。如果您需要在某个地方 return 结果而不是通过回调,例如您需要等待 Future 或简单地 return 它并在需要的地方处理它的结果。
onSuccess
是非阻塞的。
val f = Future { Thread.sleep(1000) }
f.onSuccess { case _ => println("success" }
println("before success")
这将输出:
before success
success
onSuccess
将始终在未来成功完成时执行。这种方法的主要优点是您可以在等待 future 完成的同时继续做其他事情。
对于 Await.result
,在 Future
完成之前不会移动到下一行。