我正在处理我的自定义Observables
,试图让它们在我的代码中更加可重用,并想知道最好的[正确]方法。
我正在做的只是实施Observable.OnSubscribe<>
界面并使用call()
方法。
基本上,我想订阅另一个Observable
并根据其结果有条件地发出一个或其他数据。在上述Observable
方法中订阅另一个call()
是不好的做法吗?至少对我来说似乎很笨拙。或者我应该以不同的方式使用Rx运算符(我仍然)不知道?
注意:我没有使用Java8和Retrolambda,所以请不要在任何可能的答案上使用lambdas。
答案 0 :(得分:3)
创建自定义Observables的范围从棘手到困难,我不建议将其作为第一步。您的方案可以通过flatMap
解决:
source.flatMap(new Func1<Integer, Observable<Integer>>() {
@Override
public Observable<Integer> call(Integer value) {
if (value < 5) {
return Observable.empty();
}
return Observable.just(value * 2);
}
});
在上述call()方法中订阅另一个Observable是不好的做法吗?
不,但你必须通过Subscriber
包裹传入的Subscribers.wrap()
来避免所谓的多个onStart调用。