未来的内线卫士

时间:2018-05-04 06:29:27

标签: scala future guard

有没有办法等待在保护区内完成未来f
不在case区块内或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(":(")
  }
}

1 个答案:

答案 0 :(得分:1)

您将需要这些额外的导入:

import scala.concurrent.duration._
import scala.concurrent.Await

你可以这样做:

case x if Try(Await.ready(f, 2 minutes)).isSuccess => println("Future completed")