0

我们有一个 vertx verticle,它接收一个 id 并使用它来查看数据库中是否存在具有该 id 的实体。它包含以下逻辑:

if (itemFound) {
  e.onNext(item_which_was_found)
}
else {
  e.onNext(null);
}

另一个 Verticle 有一个 Observable,它处理一个 id 的列表。它用于rxSend将列表中的每个 id 传递给第一个 Verticle 以进行数据库查找:

Observable<Object> observable = ...
observable.flatMapSingle(id -> {
  return rxSend(VERTICLE_1_ADDRESS, id);
})
.flatMapSingle ( i ->
{ 
  // Logic dependent on if item was found
)
.subscribe();

有了上面,很容易处理在数据库中找到与 id 关联的实体的情况,因为第一个 vertcle in onNext(),返回实体。问题是针对第二种情况,当没有实体存在并且第一个 verticle 返回时onNext(null)。在这种情况下,如何在第二种情况下检索flatMapSingle当前正在处理的 observable 中的项目(即id没有关联的数据库实体)?或者有没有更好的方法来构建代码?

谢谢

4

1 回答 1

1

您可以将 observable 定义更改为:

Observable<Object> observable = observable();
observable.flatMapSingle(id -> {
  return rxSend(VERTICLE_1_ADDRESS, id).flatMap(i -> {
    // Logic dependent on if item was found
    // id is visible here
  });
}).subscribe();

然后id您的第二个 lambda 将可见。

于 2019-06-06T16:07:52.430 回答