我有一个返回Observable的方法,它执行API调用,它是应用程序许多地方的多个observable的一部分(因为它们使用相同的数据)。目前,即使在缓存API调用的结果时,将Observable返回给API的方法也会同时被多次调用。在这种情况下,app会执行多个请求。如何返回正在进行(或可观察)的相同API调用,以便同时只有一个正在进行的API调用?
示例代码如下:
var cache: ApiResponse? = null
fun getApiCall() : Observable<ApiResponse> {
return if(cache != null) {
Observable.just(cache)
} else {
Observable.just(retrofitClient.doApiCall())
.map {
doSomeStuffWithOutput()
cache = it
}
}
}我想到了CompositeDisposable或.cache()运算符,但问题是它是可观察链的一部分,并在方法调用中订阅更高的位置,并且此方法用于多个可观察值。
发布于 2020-10-09 23:57:55
https://stackoverflow.com/questions/64282602
复制相似问题