【问题标题】:Why you should not use Observable.create为什么你不应该使用 Observable.create
【发布时间】:2018-01-06 20:06:59
【问题描述】:

我在很多 Rxjava 教程中看到,不鼓励使用 Observable.create 方法创建 Observable。最好使用Observable.fromCallableObservable.just 来发射单个对象。使用Observable.create 作为最后一个选项。这是为什么?问题之一是处理背压。使用create还有其他风险吗?任何人都可以用一些例子来解释它以便更好地理解吗?我没有从任何教程中得到这个问题的正确解释,这就是我在这里问的原因。提前致谢

【问题讨论】:

  • 你看过deprecation的原版笔记吗?
  • 我读过,但没有正确理解。 不幸的是,指南、博客、StackOverflow 答案和单纯的典型用户行为仍然会导致这种 create 方法和许多混乱、不可阻挡的序列和 MissingBackpressureException 因此,从 1.2.7 开始,create() 方法现在已弃用 这意味着从最新的 RxJava 2.X 开始,我们不再推荐使用它了吗?
  • 如果是这样,这是替代方案,它将反应世界与回调风格世界联系起来
  • 两个参数create 可用于此类桥梁,因为它提供了保障。但是,很多人使用旧的 create 来实现源,例如 justfrom(Iterable) 重来。
  • 我仍然使用create 从我现有的异步代码创建一个 Observable。我相信这是唯一的方法。不是吗?

标签: rx-java rx-java2


【解决方案1】:

不是关于鼓励,而是关于如果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 就可以了。

您可以在此处查看创建运算符的示例https://github.com/politrons/reactive/blob/master/src/test/java/rx/observables/creating/ObservableCreate.java

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-25
    • 2023-03-15
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    相关资源
    最近更新 更多