Futures

  • przyklad http
  • map : A -> Result
val overallAvailability: Future[Option[Boolean]] =
allSitesAvailable.map { a =>
  Option(a)
  } recover {
  case ce: java.net.ConnectionException => None
}
def fileExists(path: String): Future[Boolean] = Future {
blocking {
new java.io.File(path).exists
}
}

recover


def authenticationErrorHandler: PartialFunction[Throwable, Result] = {
(...)
}

val recoveredAuthentication: Future[Result] =
authentication.recover(authenticationErrorHandler)
//i tutaj różne webowestatusy
val timeoutFuture = Promise.timeout(
  "Authentication service unresponsive", 2.seconds
)
Future.firstCompletedOf(
  Seq(authentication, timeoutFuture)
)

recover recoverWith

  • przyklad z Future[Unit]

cancelation

blocking

Future{
blocking{
sleep(5000)
}
}

Monady i Applicative

for{
f1 <- Future(1)
f2 <- Future(2)
} yield "f2 zacznie sie dopiero jak skonczy sie f1"

results matching ""

    No results matching ""