0
在android上,我正在使用请求数据库并尝试将我的数据库更改上载到服务器。为了达到同样的,我运行下面的逻辑requery db&rxjava observableResult多次调用后续函数
Scheduler sub2 = Schedulers.newThread();
Scheduler ob2 = Schedulers.newThread();
data.select(Broadcaster.class)
.where(Broadcaster.IS_DIRTY.eq(true))
.get()
.observableResult()
.subscribeOn(sub2)
.observeOn(ob2)
.flatMap(broadcasters->broadcasters.observable())
.flatMap(broadcasters->Backend.getInstance()
.uploadBroadcaster(broadcasters)
.onExceptionResumeNext(Observable.empty()))
.flatMapSingle(broadcaster -> markUploaded(broadcaster))
.doOnError(t->Log.e(TAG,"Error uploading ",t))
.subscribe();
但是,每改变uploadBroadcaster被称为多次(4-10次)使用相同的数据。 我在这里做错了什么。
每个'onNext()'都会调用'flatMap()',所以它依赖于上游Observable发射,它可能发射的不止是单个项目,因此你多次调用'uploadBroadcaster'。 '.observableResult()'和'broadcasters.observable()'做了什么? – yosriz
更新了问题。我在android上使用了重新查询数据库。 .observableResult将响应的结果作为reactiveResult发送给db,而.observable将reactiveResult转换为observable –