我在看AKKA的Java Futures API,我看到很多方法可以处理同一类型的多个期货,但我没有看到任何突然出现在处理不同类型期货的东西。我猜我说这比现在更复杂。
无论如何,让我们说我们有两个不同的演员:actorA和actorB。它们基于不同的类,它们各自返回不同的未来。但是,actorB依赖于actorA的Future。以下是逻辑,如何最好地处理这种情况?
Future<A> a = actorA.sendRequestReplyFuture(...);
Future<B> b = actorB.sendRequestReplyFuture(a);
如果我们有一个actorAs和actorB的列表怎么样?
答案 0 :(得分:1)
为什么不像你一样包装它们,但只需稍作修改 - 将a的结果传递给b。
Future a = actorA.sendRequestReplyFuture(...);
Future b = actorB.sendRequestReplyFuture(a.get());
这种安排只意味着在actorB.sendRequestReplyFuture()
完成之前不会调用actorA.sendRequestReplyFuture()
。没错,事实上,我喜欢你所拥有的模式。
答案 1 :(得分:1)
警告,只是从内存写入,可能无法编译OOTB:
Future<B> b = actor.sendRequestReplyFuture().flatMap( new akka.japi.Function<A,Future<B>>() {
public Future<B> apply(A a) {
return actor.sendRequestReplyFuture(a);
}
}