我想知道当RxJava链中有多个subscribeOn()
方法时会发生什么。例如,如果我的链条是这样的,
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())
调用会产生什么影响?
赞赏对此的任何见识
答案 0 :(得分:2)
它看起来没有任何作用。将subscribeOn
放在链中的哪个位置都具有相同的效果都没关系。
根据文档,observeOn
的行为有所不同,因此您可以在链中的任何位置更改观察结果的线程。
来自Rx文档:
SubscribeOn运算符指定Observable将使用哪个线程 无论在运营商链中的哪个点都可以开始运营 该操作员被称为。另一方面,ObserveOn影响 Observable将在该运算符出现的位置使用的线程。 因此,您可以在不同的时间多次调用ObserveOn 可观察算子链中的点,以便改变 这些运算符中的某些运算符在哪个线程上运行。
http://reactivex.io/documentation/operators/subscribeon.html