我正在处理我的自定义 Observables
努力使它们在我的代码中更具可重用性,并想知道最好的 [正确] 方法。
我所做的只是实现 Observable.OnSubscribe<>
界面和工作在 call()
方法。
基本上,我想订阅另一个Observable
并根据其结果,有条件地发出一个或其他数据。订阅另一个 Observable
是一种不好的做法吗?在上述call()
里面方法?至少对我来说这看起来很笨拙。或者我应该以我(仍然)不知道的不同方式使用 Rx 运算符吗?
注意:我没有使用 Java8 和 Retrolambda,所以请不要在任何可能的答案中使用 lambda。
最佳答案
创建自定义 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);
}
});
Is it a bad practice to subscribe to another Observable inside the aforementioned call() method?
不,但是您必须通过 Subscribers.wrap()
包装传入的 Subscriber
来避免所谓的多次 onStart 调用。
关于java - 使用 RxJava 创建自定义 Observables 的正确方式[有点]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32553864/