Jestem nowy w scala i staram się łączyć kilka kontraktów futures w scala 2.10RC3. Model Futures
powinien być wykonywany w kolejności. W dokumencie Scala SIP14 zdefiniowano metodę andThen
w celu wykonania Futures w porządku sekwencyjnym. Użyłem tej metody, aby połączyć kilka Futures
(patrz przykład poniżej). Spodziewałem się, że wydrukuje on 6
, ale w rzeczywistości wynikiem jest 0
. Co ja tu robię źle? Mam dwa pytania:Kolejno łącz dowolną liczbę kontraktów terminowych w Scala
Po pierwsze, dlaczego jest wynikiem 0
. Po drugie, jak mogę połączyć kilka Futures
, aby wykonanie drugiego Future
nie zostało uruchomione przed zakończeniem pierwszego Future
.
val intList = List(1, 2, 3)
val sumOfIntFuture = intList.foldLeft(Future { 0 }) {
case (future, i) => future andThen {
case Success(result) => result + i
case Failure(e) => println(e)
}
}
sumOfIntFuture onSuccess { case x => println(x) }
Dzięki! Dokładnie tego potrzebowałem. – Chrisse
+1 To bardzo mi pomogło! – pvorb