Gre*_* Ho 5 android reactive-programming observable rx-java
H,
对不起,我是RxJava的新手,对如何使用rx.Observable有疑问.
这是我的代码
final Observable<SomeData> data1 =
getData(...);
final Observable<SomeData> data2 =
getData(...);
final Observable<SomeData> data3 =
getData(...);
return Observable.zip(
data1,
data2,
data3,
new Func3<SomeData, SomeData, SomeData, SomeData>() {
@Override
public SomeData call(
final SomeData d1,
final SomeData d2,
final SomeData d3) {
//do something and return SomeData
}
});
Run Code Online (Sandbox Code Playgroud)
这里我在所有数据存在时使用zip.
我的问题是如果data2和data3不存在(即它们都是null),我不会/不应该使用Observable.zip来发出函数并获取返回的值,所以当我只做时我该怎么办有数据1?如果我只使用一个参数(data1),我应该使用哪个API?此外,我将不得不从函数返回SomeData而不是Observable.
任何帮助都感激不尽!
当您只有第一个参数的数据时,您无法真正应用相同的 3 参数函数,但您可以使用标记值来告诉函数参数 2 和 3 没有数据:
static final SomeData NOT_PRESENT = new SomeData(null, ...);
void Observable<OutputType> process(Observable<SomeData> data1,
Observable<SomeData> data2, Observable<SomeDatat> data3) {
Func3<SomeData, SomeData, SomeData, OutputType> f3 = (a, b, c) -> {
if (b == NOT_PRESENT) {
}
// process the data and return an OutputType
return ...
};
if (data2 != null && data3 != null) {
return Observable.zip(data1, data2, data3, f3);
}
return data1.map(v -> f3.call(v, NOT_PRESENT, NOT_PRESENT));
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1117 次 |
| 最近记录: |