我可以使用一个Observable来发出另一个Observable使用的值吗?

时间:2015-08-18 02:43:13

标签: reactive-programming rx-java

我是rx-java的新手,可能没有正确使用它,但这就是我想要做的:

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

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

我想'链接'这两个Observable,这样当Observable<String>发出一个路径时,Observable<Boolean>会把它放在队列中并返回它是否成功。我想最终得到一个执行这两个操作的Observable。

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

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

1 个答案:

答案 0 :(得分:1)

看起来flatMap正是您要找的。

所以你有:

Observable<String> data;

和方法

Observable<Boolean> putOnQueue(String path);

然后你可以这样做:

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