Nell'esempio qui sotto ho l'eccezione java.util.NoSuchElementException: Future.filter predicate is not satisfied
Scala futuro con filtro per la comprensione
voglio avere il risultato Future(Test2)
quando il controllo if(i == 2)
fallisce. Come gestisco il filtro/se all'interno di una comprensione che riguarda la composizione dei future?
Di seguito è un esempio semplificato che funziona in Scala REPL.
Codice:
import scala.concurrent.Future
import scala.util.{ Try, Success, Failure }
import scala.concurrent.ExecutionContext.Implicits.global
val f1 = Future(1)
val f2 = for {
i <- f1
if(i == 2)
} yield "Test1"
f2.recover{ case _ => "Test2" }
f2.value
Tuttavia, se f2 non riesce a causa di "i <- f1" in errore, il risultato non sarà "Test2" ma sarà comunque un errore. –