我们说我有以下代码。
Scheduler ioSC = getIOThread();
Scheduler mainSC = AndroidSchedulers.mainThread();
Subscription subs = getObservable()
.doOnNext(getAction1())
.doOnSubscribe(getAction2())
.observeOn(/****TODO***/)
.subscribe(getSubsAction());
在这段代码中,我希望能够根据我从getObservable()得到的项目的类型设置observeOn()的线程。 如何在此订阅中添加此条件检查? 甚至可以为observeOn()动态设置线程吗? 谢谢!
答案 0 :(得分:0)
您可以使用flatMap()
:
getObservable()
.doOnNext(getAction1())
.doOnSubscribe(getAction2())
.flatMap(item -> Observable.just(item).observeOn(getScheduler(item)))
.subscribe(getSubsAction());
然后问题就出现了,为什么你会使用相同的订阅者处理不同线程上的不同项目。这似乎有些偏差,你可能想重新考虑你的链。