Skip to content
Scala

Futures et Async

Calcul asynchrone avec Future et ExecutionContext.

#future#async#concurrency

Code

scala
import scala.concurrent.{Future, ExecutionContext}
import scala.concurrent.duration._
import ExecutionContext.Implicits.global

def fetchUser(id: Int): Future[String] = Future {
  Thread.sleep(100)
  s"user-$id"
}

// Compose futures
val future = for {
  u1 <- fetchUser(1)
  u2 <- fetchUser(2)
} yield s"$u1 and $u2"

// Callback
future.onComplete {
  case util.Success(v) => println(v)
  case util.Failure(e) => println(s"Error: $e")
}

// Block (avoid in production)
val result = scala.concurrent.Await.result(future, 5.seconds)