Scala 未来内卫
有没有办法在防护块内等待将来的Scala 未来内卫,scala,future,guard,Scala,Future,Guard,有没有办法在防护块内等待将来的f完成不在案例块内或Try块外 import scala.util.Try import scala.concurrent.Future import scala.concurrent.ExecutionContext.Implicits.global object Main extends App { val f = Future { Thread.sleep(999999) true } Try (1) match { c
f
完成不在
案例
块内或Try
块外
import scala.util.Try
import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
object Main extends App {
val f = Future {
Thread.sleep(999999)
true
}
Try (1) match {
case x if f => println("Waited for future") // Here
case _ => println(":(")
}
}
您将需要这些额外的导入:
import scala.concurrent.duration._
import scala.concurrent.Await
您可以这样做:
case x if Try(Await.ready(f, 2 minutes)).isSuccess => println("Future completed")
如果f,你所说的案例x是什么意思?它是一个守卫:是的,等待未来就是这样运作的。你可以减少持续时间,比如说1秒,以减少主线程被阻塞的时间。我想这并不酷。我看起来像是
map
或onSuccess
也许我不明白你想做什么。请详细说明,不需要更多。我发现了这个案子。谢谢你