【问题标题】:Observable.create vs Observable.fromAsync in RxJavaRxJava 中的 Observable.create 与 Observable.fromAsync
【发布时间】:2016-07-29 06:58:16
【问题描述】:

我了解 Observable.create is discouraged in RxJava 的使用是由于缺乏背压支持。由于这个原因,我开始使用新的 Observable.fromAsync 来包装回调 API,因为它处理背压的行为似乎与 Observable.create 相同。

但是在these draft docs 中,建议似乎是像下面这样公开我创建的可观察对象应该可以解决这个问题:

Observable<T> observable = Observable.create(onSubscribe).onBackpressureBuffer();

这是正确的吗?此时这两个运算符有什么区别?如果这不正确,是否有任何理由使用 .create 而不是 .fromAsync

【问题讨论】:

    标签: rx-java


    【解决方案1】:

    create 主要是为了支持 RxJava 的内部工作以及那些知道如何实现运算符的人。它需要一个人手动处理背压和退订,因为不同的运营商需要不同的方法来处理它们。

    fromEmitter 明确了背压要求,并提供了一些退订管理。因此,更难滥用它。如果需要一些东西来包装经典的回调 API,我们建议切换到它。

    编辑:从 RxJava 1.2.6 开始,方法名称为 fromEmitter

    【讨论】:

    • 知道了 - 所以一般来说,忘记 create 的存在。谢谢!
    • 顺便说一句 - 您链接到的这些新文档非常出色!让他们公开,快!
    猜你喜欢
    • 2017-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多