Мне немного любопытно, как .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()
никогда не вызывается и ошибок в моем логарифме нет.
Я могу оставить вещи так, как они были, но я хотел бы знать, почему это происходит. Это правда, что позиция не имеет значения? Это что-то не так с моим кодом? Here's how my code looks
Отличный разговор, стоит посмотреть спасибо. Но я не подписываюсь на горячие наблюдаемые, это холодная проверка моего суждения. А также Дэн Лью говорит в разговоре, что порядок .subscribeOn не имеет значения. .observeOn - это еще одна история – feresr
Позвольте мне проверить это –