RxJava многократная подписка () в цепочке - PullRequest
1 голос
/ 29 июня 2019

Я хотел бы знать, что происходит, когда у нас есть несколько subscribeOn() методов в цепочке RxJava.Например, если бы у меня была цепочка, похожая на эту,

    Single.fromCallable { repository.apiCall1() }
        .subscribeOn(Schedulers.io())
        .flatMap { result -> Single.fromCallable { repository.apiCall2() } }
        .subscribeOn(Schedulers.io())
        .map { // do something }
        .observeOn(Schedulers.ui())

означало бы это, что поток, в котором выполняются вызовы API, не совпадает?И каково будет влияние / эффект удаления первого subscribeOn(Schedulers.io()) вызова в этой цепочке выше?

Оцените любые идеи по этому

1 Ответ

2 голосов
/ 29 июня 2019

Похоже, это не будет иметь никакого эффекта.Неважно, куда вы положите subscribeOn в цепочку, которая будет иметь тот же эффект.

Согласно документации, observeOn имеет другое поведение, поэтому вы можете изменить поток, где вы находитесьнаблюдение за результатом в любой точке цепочки.

Из документации Rx:

оператор SubscribeOn определяет, с каким потоком начнет работать Observable, независимо от того, с какой точки вцепочка операторов этот оператор называется.ObserveOn, с другой стороны, влияет на поток, который Observable будет использовать ниже, где появляется этот оператор.По этой причине вы можете вызывать ObserveOn несколько раз в различных точках в цепочке операторов Observable, чтобы изменить потоки некоторых из этих операторов.

http://reactivex.io/documentation/operators/subscribeon.html

...