私は rxjava/rxkotlin/rxandroid の初心者です。
シーケンスで 3 つの異なる非同期呼び出しを処理する必要があります。問題は、最初のステップが a を返しSingle<LocationResult>
、2 番目のステップが a を返しCompletable
、3 番目のステップが再び 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
ですか?