RxJava2:在给定的调度程序上使用PublishSubject更改事件?

时间:2016-12-07 11:16:56

标签: android rx-java rx-java2

挑战:我希望有一个存储库可以生成查询(Query<T>),调用者可以为其指定调度程序,并以其想要的方式进行操作,反过来也自动更新,因为更改事件通过总线在内部传播(PublishSubject,除非有更好的方法吗?请告诉我)。

调度程序来自调用者并且不会继承&#34;这一点非常重要。直接从存储库;因为一些查询将被组合,因此不能来自不同的线程。基本上,我希望能够为整个可观察链指定调度程序,并且可以在那里有多个查询可观察对象。

一般来说 - 这很好...... 一旦将更改事件引入图片中,事情就变得非常混乱,真正快速。根据我的理解,这是因为主题将在与调用者相同的线程上传播其事件。这导致Query<T>上面的subject.onNext(..)根据调用Observable<Query<T>>的位置在不同的调度程序上工作,这就是挑战。

如何通过PublishSub强制ChangeEvents在与它创建的interface Query<T>{ T findFirst(); } Repository repo = new Repository(); repo.createQuery(IceCream.class) //Returns Observable<Query<IceCream>> .map(it.findFirst()) //Returns IceCream .map(it -> it.getName()) //Returns "Magnum Choco" .subscribeOn(Schedulers.computation()) .unsubscribeOn(Schedulers.computation()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(it -> Timber.d("Got IceCream with name: %s",it)) 相同的调度程序上观察?没有明确指定.observeOn()?

我对接下来的挑战采取不同的方法,但从我的实验来看,这似乎就是&#34;对&#34;这样做的方式。如果是另一种方式,请赐教我。

ng-model

我感谢你的智慧和帮助。对不起冰淇淋的渴望。

0 个答案:

没有答案