将Observable与第二个Observable组合,第二个Observable使用了第一个Observable的结果。

8

我有两种返回Observable的方法:

Observable<String> firstObservable();
Observable<String> secondObservable(String value);

对于第一个 Observable 的每个结果,我会得到第二个 Observable 的新实例。对于第二个 Observable 的每个结果,我将返回一个包含组合结果的对象。

firstObservable ->  x----x----x----x----x
                     \    \    \    \    \
secondObservable ->   y(x)-y(x)-y(x)-y(x)-y(x)
                      \     \     \     \     \
result ->             {x,y}-{x,y}-{x,y}-{x,y}-{x,y}

如何实现这个目标?
1个回答

13

有一种重载的flatMap变体,第二个参数是组合函数,它可以访问初始项和由第二个可观测对象产生的项:

firstObservable.flatMap(string -> secondObservable(string), (s, s2) -> s + s2);


谢谢!我知道flatMap,但不知怎么没注意到这个重载。 - Artur Shamsutdinov
我认为这个用法现在已经被弃用了? - ahong
@ahong 这个答案是在 RxJava 2 时代给出的。老实说,我不知道在 RxJava 3 中是否有任何不同。但至少在 RxJava 2 中它看起来并没有被弃用。 - AndroidEx
抱歉,我有些困惑。我以为这是一个 RxJs 的解决方案——但我认为它已经在 RxJs 中被弃用了,但不确定接口在语言之间是否相同。 - ahong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接