java - 使用 RxJava 创建自定义 Observables 的正确方式[有点]?

标签 java rx-java rx-android

我正在处理我的自定义 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/

相关文章:

android - 使用 .just() 运算符时如何添加延迟

java - 用于 Windows SSL 实现的 Apache Tomcat 不工作

java - 我们如何在cacheManager中管理多个用户...

java - 如何在非 eclipse 项目中使用 eclipse Jar-in-Jar Classloader 在运行时加载 jar?

rx-java - 速率限制 observables

android - RxJava 和 RxAndroid 的区别?

android - 我们可以同时使用 Retrofit、RxJava 和 RxAndroid 吗?

java - EntityManagerFactory 中未指定 PersistenceProvider,并且选择的 PersistenceUnitInfo 未指定基于注释的配置

spring - 背压在Project Reactor中如何工作?

android - AppObservable 是 Android 必须的吗?