我理解由于缺乏背压支持而使用Observable.create
is discouraged in RxJava。因此,我已经开始使用新的Observable.fromAsync
来包装回调API,因为它处理背压,看似与Observable.create
看似相同的行为。
然而在these draft docs中,建议似乎是暴露我创建的observable如下所示应该解决这个问题:
Observable<T> observable = Observable.create(onSubscribe).onBackpressureBuffer();
这是对的吗?此时两个运营商之间有什么区别?如果这不正确,是否有理由使用.create
而不是.fromAsync
?
答案 0 :(得分:5)
create
主要用于支持RxJava的内部工作以及了解如何实现运算符的人员。它需要一个人手动处理背压和取消订阅,因为不同的操作员需要不同的方法。
fromEmitter
明确背压要求,并提供一些取消订阅管理。因此,滥用它更难。如果需要包装经典的回调API,我们建议切换到它。
编辑:自RxJava 1.2.6起,方法名称为fromEmitter
。