据我所知,由于缺乏背压支持Observable.create ,RxJava不鼓励使用.由于这个原因,我已经开始使用new Observable.fromAsync来包装回调API,因为它处理背压,看起来与其他看似相同的行为Observable.create.
然而,在这些草案文档中,建议似乎是暴露我创建的observable如下所示应解决此问题:
Observable<T> observable = Observable.create(onSubscribe).onBackpressureBuffer();
Run Code Online (Sandbox Code Playgroud)
它是否正确?此时两个运营商之间有什么区别?如果这是不正确的,是有过任何理由使用.create过.fromAsync?
create主要是为了支持RxJava的内部工作以及那些知道如何实现运算符的人.它需要一个人手动处理背压和取消订阅,因为不同的操作员需要不同的方法.
fromEmitter使背压要求明确,并提供一些取消订阅管理.因此,滥用它更难.如果需要包装经典回调API,我们建议切换到它.
编辑:从RxJava 1.2.6开始,方法名称为fromEmitter.