0

我正在查看 AKKA 的 Java Futures API,我看到了很多方法来处理同一类型的多个期货,但我没有看到任何可以处理不同类型期货的东西。我猜我让这比现在更复杂。

无论如何,假设我们有两个不同的 Actor:actorA 和 actorB。它们基于不同的类,并且各自返回不同的 Future。然而,actorB 依赖于来自 actorA 的 Future。是以下逻辑,如何最好地处理这种情况?

Future<A> a = actorA.sendRequestReplyFuture(...);

Future<B> b = actorB.sendRequestReplyFuture(a);

如果我们有一个actorAs 和actorBs 的列表呢?

4

2 回答 2

1

为什么不像你一样将它们包装起来,而是稍微改变一下 - 将 a 的结果传递给 b。

Future a = actorA.sendRequestReplyFuture(...);

Future b = actorB.sendRequestReplyFuture(a.get());

这种安排只是意味着在完成actorB.sendRequestReplyFuture()之前不会被调用 actorA.sendRequestReplyFuture()。这没什么错,事实上,我喜欢你那里的模式。

于 2011-07-14T23:25:18.087 回答
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);
  }
}
于 2011-07-18T11:32:56.080 回答