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
}
});
这里我在所有数据存在时使用zip .
我的问题是如果data2和data3不存在(即它们都是null),我不会/不应该使用Observable.zip来发出函数并获取返回的值,所以当我只做时我该怎么办有数据1?如果我只使用一个参数(data1),我应该使用哪个API?此外,我将不得不从函数返回SomeData而不是Observable .
任何帮助都感激不尽!
2 回答
当您只有第一个参数的数据时,您不能真正应用相同的3参数函数,但您可以使用sentinel值来告诉函数参数2和3没有数据:
您可以使用
Observable.combineLatest()
而不是zip()
并将.startWith()
添加到可以"null"不发射任何内容的Observables . 所以在你的情况下,它会像: