我可以有一个 Observable 发出值供另一个 Observable 使用吗?

Can I have an Observable that emits values to be used by another Observable?

我是 rx-java 的新手,可能没有正确使用它,但这就是我正在尝试做的事情:

我有一个 Observable<String> 将一些数据存储在外部数据库中并发出一个字符串,它是存储数据的路径或键。

我有第二个 Observable<Boolean> 接受一个字符串并将其放入队列并发出该操作是否成功。

我想 'chain' 这两个 Observables 这样当 Observable<String> 发出一条路径时,Observable<Boolean> 将其放入队列并且 returns 是否成功.我想以一个执行这两个操作的 Observable 结束。

我没能找到任何 API 方法让我做我想做的事所以我开始认为我没有正确使用 rx-java 。似乎我需要使用我的 Observable<String> 并调用 .map() 将其变成 Observable<Boolean>,但是通过这样做我无法使用我原来的 Observable<Boolean> 除了通过只是 运行 它作为 map() 内部的一个阻塞方法,但在那个时候它也可能只是一个 Callable。

编辑:似乎我应该使用 Singles 而不是 Observables,因为我的 Observables 只需要在完成前发出一个值。

看起来 flatMap 就是您要找的。

所以你有:

Observable<String> data;

和方法

Observable<Boolean> putOnQueue(String path);

那么你可以这样做:

Observable<Boolean> result = data.flatMap(path -> putOnQueue(path));