为什么不应该使用Observable.create

3
我在许多Rxjava教程中看到,不鼓励使用Observable.create方法创建Observable。相反,最好使用Observable.fromCallableObservable.just来发出单个对象。将Observable.create用作最后选择。为什么呢?其中一个问题是处理背压。使用create还有其他风险吗?可以举例说明吗?我没有从任何教程中得到这个问题的适当解释,所以我在这里问。谢谢。

1
你有阅读原始的弃用说明吗? - akarnokd
我读了,但没有完全理解。不幸的是,指南、博客、StackOverflow答案和典型用户行为仍然会导致这种create方法的使用,以及大量混淆、不可阻止的序列和MissingBackpressureException。因此,从1.2.7版本开始,create()方法现已被弃用。这意味着在最新的RxJava 2.X中,我们不再建议使用它? - user4260260
如果是这样,那么有哪些替代方案可以将反应式世界与回调风格的世界连接起来呢? - user4260260
我仍然使用create来从现有的异步代码中创建Observable。而且我相信这是唯一的方法,不是吗? - user4260260
你读过Javadoc了吗?1.x2.x - akarnokd
显示剩余2条评论
1个回答

0

这不是鼓励的问题,而是如果create操作符可以调整你所需的内容。 create操作符使您可以实现onNextonError选项。

   @Test
    public void testCreateObservableNext() {
        Observable.create(observer -> {
            observer.onNext("Injected value on Next");
            observer.onError(new NullPointerException("This is the final exception"));

    }).map(s -> ((String) s).toUpperCase())
            .subscribe(System.out::println, System.out::println);
}

如果您不需要那个,justfromCallable就足够了。
您可以在这里查看create操作符的示例https://github.com/politrons/reactive/blob/master/src/test/java/rx/observables/creating/ObservableCreate.java

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接