如何创建 rx 的缓存/热版本。单?
2022-09-02 10:58:50
RxJava v1.0.13 引入了一种新型的 Observable:rx。单身。它非常适合请求 - 响应模型,但缺乏引入doOnNext()等运算符的标准副作用。因此,因此,让多件事发生要困难得多。
我的想法是将doOnNext()替换为对同一单个实例的多个订阅。但这可能会导致底层工作多次完成:每个订阅一次。
示例 rx.单一实现:
private class WorkerSubscribe<SomeData>() : Single.OnSubscribe<SomeData> {
override fun call(sub: SingleSubscriber<in SomeData>) {
try {
val result = fetchSomeData()
sub.onSuccess(result)
} catch(t: Throwable) {
sub.onError(t)
}
}
}
val single = Single.create<SomeData>(WorkerSubscribe())
用法:
single.subscribe({}, {})
single.subscribe({}, {}) // Data is fetched for the second time
是否可以创建一个 Single 实例,即使多次调用 single.subscribe() 也不会多次获取SomeData(),但缓存并返回相同的结果?