我是 rxjava 的新手。我需要组合两个发出不同类型对象的可观察对象。像Observable<Milk>
andObservable<Cereals>
和得到一个Observable<CerealsWithMilk>
. 我找不到这样的操作员。做这样的事情的 rx 方式是什么?请注意,Milk
andCereals
是异步的。
问问题
25915 次
2 回答
79
如果不确切知道您需要什么很难说,但可能是zip()或combineLatest()。
zip
将同时使用Observable<Milk>
andObservable<Cereals>
并让您CerealsWithMilk
通过提供的功能将它们组合在一起。CerealsWithMilk
每次获得a和a时,都会发出一个新的。Milk
Cereals
combineLatest
类似于zip
除了它会发出一个新的CerealsWithMilk
,即使只发出一个新的Milk
或只Cereals
发出一个新的。
于 2015-03-23T21:07:51.187 回答
7
如果要合并不同类型的可观察对象,则需要使用 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
将是一个 observable,生成(a, b) -> a + b
too1
和o2
' 项目的应用。导致可观察到的 yield "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;
}
于 2017-09-08T10:42:10.353 回答