Future Future
1. Définition
Lorsqu’on veut écrire des opérations asynchrones, on fait appel à un Future. Cela correspond à un bloc d’opérations qui sera disponible à un moment, ou, à défaut, renverra une Exception. Le résultat d’un Future est un Try (vu dans la partie Gestion des erreurs) et peut donc avoir deux valeurs possibles : Erreurs:Exception
-
Success(x), où x est la valeur obtenue calculée dans le corps du Future. Try:Sucess
-
Failure(e), où e est une Exception survenue dans le corps du Future Try:Failure ou si ce dernier ne s’est pas terminé.
Future fait partie du package scala.concurrent, il faut l’importer pour pouvoir l’utiliser. De plus, il faut spécifier un contexte d’exécution lors de la manipulation de Future ; pour cela, il suffit d’importer le contexte global présent dans le même paquet et le déclarer dans une variable implicite.
Prenons comme exemple la méthode tacheLongue qui attend 10 secondes puis donne un nombre aléatoire entre 1 et 10.
import scala.concurrent.Future
import scala.concurrent.ExecutionContext Future:ExecutionContext
import scala.util.Random
implicit val executor: ExecutionContext = ExecutionContext.global
// executor: scala.concurrent.ExecutionContext =
scala.concurrent.impl.ExecutionContextImpl@d204ff8
def tacheLongue(): Future[Int] = Future...