2016-07-29 55 views
4

我知道由於缺乏背壓支持,使用Observable.createis discouraged in RxJava。由於這個原因,我已經開始使用新的Observable.fromAsync來包裝回調API,因爲它處理背壓的方式看起來與Observable.create的行爲看似相同。RxJava中的Observable.create vs Observable.fromAsync

但是在these draft docs,建議似乎是揭我的創建觀察到類似下面應該解決這個問題:

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

這是正確的嗎?在這點上兩個操作員有什麼區別?如果這不正確,是否有任何理由使用.create而不是.fromAsync

回答

5

create主要是爲了支持RxJava的內部運作以及那些知道如何實現運營商的人。它需要人來手動處理背壓和取消訂閱,因爲不同的操作員需要不同的方法。

fromEmitter使背壓要求明確並提供一些取消訂閱管理。因此,濫用它很難。我們建議如果需要某些東西來包裝傳統的回調API,則切換到它。

編輯:截至RxJava 1.2.6方法名稱爲fromEmitter

+0

明白了 - 所以一般情況下,忘記「創建」存在。謝謝! – Marcus

+0

順便說一句 - 這些新鏈接的文檔非常出色!讓他們公開,快! – Marcus

+0

@Marcus它是公共的http://stackoverflow.com/documentation – LordRaydenMK