Rx java 为什么不应该使用Observable.create
我在许多Rxjava教程中看到,不鼓励使用Rx java 为什么不应该使用Observable.create,rx-java,rx-java2,Rx Java,Rx Java2,我在许多Rxjava教程中看到,不鼓励使用observatable.create方法来创建一个observatable。相反,最好使用Observable.fromCallable或Observable.just来发射单个对象。使用可观察。创建作为最后一个选项。为什么呢?其中一个问题是背压的处理。使用create是否存在任何其他风险?有人能用一些例子来解释一下吗?对于这个问题,我没有从任何教程中得到正确的解释,这就是我在这里提问的原因。提前感谢不是鼓励,而是如果创建操作员调整您需要的内容。 cr
observatable.create
方法来创建一个observatable。相反,最好使用Observable.fromCallable
或Observable.just
来发射单个对象。使用可观察。创建作为最后一个选项。为什么呢?其中一个问题是背压的处理。使用create
是否存在任何其他风险?有人能用一些例子来解释一下吗?对于这个问题,我没有从任何教程中得到正确的解释,这就是我在这里提问的原因。提前感谢不是鼓励,而是如果创建
操作员调整您需要的内容。
create
操作符为您提供了执行onNext
或onError
@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);
}
如果您不需要它,just
或fromCallable
就可以了
你可以在这里看到create操作符的示例你读了原始注释吗?我读了,但没有正确理解。不幸的是,指南、博客、StackOverflow答案和仅仅是典型的用户行为仍然会导致此创建方法和大量混乱、不可阻挡的序列以及缺少BackPressureException。因此,从1.2.7开始,create()方法现在已被弃用,这意味着从最新的RxJava 2.X开始,我们不再建议使用它了?如果是这样,另一种选择是,将被动世界与回调样式世界连接起来。双参数create
可用于此类桥接,因为它提供了保护措施。然而,许多人使用旧的create来实现源代码,例如just
和from(Iterable)
。我仍然使用create
从现有的异步代码创建一个可观察的源代码。我相信这是唯一的办法。不是吗?