我對.subscribeOn()
實際上在RxJava
上的工作方式感到有點好奇。 我有這一塊的,它作爲代碼預期:OnSubscribe位置導致OnComplete事件過早啓動
return endpoints.getRecentConversations(page)
.map().flatMap().doOnNext() //etc etc...
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
我讀this文章,試圖瞭解該subscribeOn
和observeOn
當此行引起了我的眼睛之間的區別:
位置無所謂
subscribeOn
可以放在流的任何地方,因爲它隻影響 訂閱時間
這聽起來很不錯。但是我決定對它進行測試,我感到有些懷疑。因此,我改變上面的代碼(交換線路2和3):
return endpoints.getRecentConversations(page)
.subscribeOn(Schedulers.io())
.map().flatMap().doOnNext() //etc etc...
.observeOn(AndroidSchedulers.mainThread())
結果,我在我的訂戶得到一個過早onComplete()
。從未調用過onNext()
,我的logcat中沒有錯誤。
我可以讓事情保持原樣,但我想知道爲什麼會發生這種情況。 位置沒關係是真的嗎?我的代碼有問題嗎? Here's how my code looks
好說話,值得看看謝謝。但是我沒有訂閱熱門的可觀測數據,這是嚴格檢查我的要點。 Dan Lew還在演講中表示.subscribeOn的順序無關緊要。 .observeOn是另一個故事 – feresr
讓我檢查它 –