gpt4 book ai didi

java - 如何创建 rx.Single 的缓存/热版本?

转载 作者:IT老高 更新时间:2023-10-28 13:30:20 25 4
gpt4 key购买 nike

RxJava v1.0.13引入了新的 Observable 类型:rx.Single。它非常适合请求-响应模型,但缺乏引入 doOnNext() 等运算符的标准副作用。因此,要让多件事同时发生要困难得多。

我的想法是将 doOnNext() 替换为对同一个 Single 实例的多个订阅。但这可能会导致底层工作多次完成:每次订阅一次。

示例 rx.Single 实现:

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.subscribe() 也不会多次 fetchSomeData() 但缓存并返回相同结果的 Single 实例?

最佳答案

您需要 RxJava Subject : BehaviorSubjectAsyncSubject

关于java - 如何创建 rx.Single 的缓存/热版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31875514/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com