Jel*_*lly 39 asynchronous observable rx-java rx-android
我是rxjava的新手.我需要组合两个发出不同类型对象的observable.喜欢的东西Observable<Milk>,并Observable<Cereals>和获得Observable<CerealsWithMilk>.对于像这样的事情,我找不到任何操作员.做这样的事情的rx方式是什么?请注意,Milk并且Cereals是异步的.
Ros*_*ick 63
如果不确切知道你需要什么,很难说,但可能是zip()或combineLatest().
zip将两者结合使用Observable<Milk>,Observable<Cereals>并让您CerealsWithMilk通过提供的功能将它们组合在一起.这发出一个新的CerealsWithMilk每次你得到的时间都一个Milk 和一个Cereals.
combineLatest类似于zip它会发出一个新的,CerealsWithMilk即使只发出一个新的Milk 或只是一个新Cereals的.
如果要合并不同类型的可观察对象,则需要使用 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);
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17473 次 |
| 最近记录: |