RxJava中的Observable.create vs Observable.fromAsync

时间:2016-07-29 06:58:17

标签: rx-java

我理解由于缺乏背压支持而使用Observable.create is discouraged in RxJava。因此,我已经开始使用新的Observable.fromAsync来包装回调API,因为它处理背压,看似与Observable.create看似相同的行为。

然而在these draft docs中,建议似乎是暴露我创建的observable如下所示应该解决这个问题:

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

这是对的吗?此时两个运营商之间有什么区别?如果这不正确,是否有理由使用.create而不是.fromAsync

1 个答案:

答案 0 :(得分:5)

create主要用于支持RxJava的内部工作以及了解如何实现运算符的人员。它需要一个人手动处理背压和取消订阅,因为不同的操作员需要不同的方法。

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

编辑:自RxJava 1.2.6起,方法名称为fromEmitter