RxJava - 在第二个 flatMapSingle 中检索 Observable 中的条目

RxJava - retrieving entry in Observable in second flatMapSingle

我们有一个 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,在onNext(),returns实体。问题是针对第二种情况,当不存在实体且第一个顶点 returns onNext(null) 时。在这种情况下,如何在第二个 flatMapSingle 中检索当前正在处理的可观察对象中的项目(即没有关联数据库实体的 id )?或者有没有更好的方法来组织代码?

谢谢

您可以将您的可观察定义更改为:

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 可见。