我是 rxjava/rxkotlin/rxandroid 的初学者。
我需要按顺序处理三个不同的异步调用。问题是第一步返回 a Single<LocationResult>
,第二步返回 a ,Completable
第三步返回 a 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
?