【发布时间】:2017-08-03 16:34:05
【问题描述】:
我是 rxjava/rxkotlin/rxandroid 的初学者。
我需要依次处理三个不同的异步调用。
问题是第一步返回Single<LocationResult>,第二步返回Completable,第三步返回Completable。
(单个 -> 可完成 -> 可完成)
现在的问题是最后一个Completable依赖于第一个Single的数据
我目前的解决方案:
我认为这是一个糟糕的解决方案,但我不知道如何正确地做到这一点。
val ft = FenceTransaction(applicationContext, apiClient)
stream
.flatMap { locationResult ->
ft.removeAll()
return@flatMap ft.commit().toSingle({ return@toSingle locationResult })
}
.flatMapCompletable {
ft.recycle()
ft.setZone(it.location.longitude, it.location.latitude, ZONE_RADIUS)
val dots = DotFilter().getFilteredDots()
for (dot in dots) {
ft.addDot(dot)
}
return@flatMapCompletable ft.commit()
}
.subscribeBy(
onComplete = {
"transaction complete".logi(this)
},
onError = {
"transaction error".logi(this)
})
这是正确的方法吗?
我应该如何处置Completeables?
一般什么时候处理Observables?
【问题讨论】:
标签: android rx-java2 reactivex rx-kotlin