我是rxjava的新手。我需要将发出不同类型对象的两个可观察对象组合在一起。像Observable<Milk>
和Observable<Cereals>
这样的东西,然后获取一个Observable<CerealsWithMilk>
。对于这样的事情,我找不到任何操作员。做这样的事情的rx方式是什么?请注意,Milk
和Cereals
是异步的。
发布于 2015-03-23 21:07:51
在不确切知道自己需要什么的情况下很难说,但可能是zip()或combineLatest()。
zip
将同时接受Observable<Milk>
和Observable<Cereals>
,并允许您通过提供的函数将它们组合到CerealsWithMilk
中。这将在每次获取a Milk
和a Cereals
时发出一个新的CerealsWithMilk
。
combineLatest
类似于zip
,只是它会发出一个新的CerealsWithMilk
,即使只是了一个新的Milk
,或者只是发出了一个新的Cereals
。
发布于 2017-09-08 10:42:10
如果要合并不同类型的可观测数据,则需要使用Observable.zip
Observable<String> o1 = Observable.just("a", "b", "c");
Observable<Integer> o2 = Observable.just(1, 2, 3);
Observable<String> result = Observable.zip(o1, o2, (a, b) -> a + b);
result
将是一个可观察到的对象,它将(a, b) -> a + b
应用到o1
和o2
的项目中,从而产生一个可观察到的产出"a1", "b2", "c3"
。
您可以使用任何函数。例如
Observable<String> o1 = Observable.just("a", "b", "c");
Observable<Integer> o2 = Observable.just(1, 2, 3);
Observable<String> result = Observable.zip(o1, o2, (a, b) -> myFunc(a, b));
//...
private String myFunc(String a, Integer b) {
//your code here
return someString;
}
https://stackoverflow.com/questions/29220050
复制相似问题