Будущее внутри охраны - PullRequest
0 голосов
/ 04 мая 2018

Можно ли как-нибудь дождаться, когда Будущее 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 голосов
/ 04 мая 2018

Вам понадобятся следующие дополнительные импортные данные:

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

Вы можете сделать это так:

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