final ExecutionContext ec = system.dispatcher();
//Some source generating a sequence of Future:s
Iterable> listOfFutureInts = source;
// now we have a Future[Iterable[Integer]]
Future> futureListOfInts = sequence(listOfFutureInts, ec);
// Find the sum of the odd numbers
Future futureSum = futureListOfInts.map(
new Mapper, Long>() {
public Long apply(Iterable ints) {
long sum = 0;
for (Integer i : ints)
sum += i;
return sum;
}
}, ec);
futureSum.onSuccess(new PrintResult(), system.dispatcher());
请记住,我正在使用Java版本的Akka进行开发,因为我对Scala不够熟悉 . 当你想要组成成功的期货时,这种方法很好 . 在这里,您只是汇总所有期货(整数)的结果并将它们相加并将其结果放在另一个可以在以后处理的未来 . 现在如果其中一个未来可能失败,即抛出异常会发生什么 . 当然,你可以使用'onFailure'回调来处理任何特定未来的失败,但我没有找到一种方法来处理组成期货时的失败 .
最好的方法是什么?我应该完全应用另一个概念吗?
谢谢 .