gpt4 book ai didi

android - 如何在 rxkotlin 中链接 "Single - Completeable - Completable"?

转载 作者:太空狗 更新时间:2023-10-29 14:42:33 26 4
gpt4 key购买 nike

我是 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

最佳答案

不知道你是否还有这个问题,但通常对于 Single->Completable->Completable 你会这样做:

val disposable = service.getSingleResult()
.flatMapCompletable { locationResult ->
callReturningCompletable(locationResult)
}
.andThen { finalCompletableCall() }
.subscribe({...}, {...})

关于android - 如何在 rxkotlin 中链接 "Single - Completeable - Completable"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45489971/

26 4 0