RxSwift 对一个 observable 的多个订阅
Posted
技术标签:
【中文标题】RxSwift 对一个 observable 的多个订阅【英文标题】:RxSwift multiple subscriptions to one observable 【发布时间】:2017-07-16 12:30:40 【问题描述】:我知道如果我想对一个 observable 进行多个订阅,我需要使用 .share() 运算符,但我不明白为什么?
我正在寻找一些基于本地数据(不是网络)的示例,以演示使用 .share() 和不使用它的区别。
运营商真正在做什么 - 使用以前订阅的数据还是创建新的?
【问题讨论】:
【参考方案1】:我写了一个虚构的小例子:
let shareObservable = Observable<Int>.create observer in
print("inside block")
DispatchQueue.main.asyncAfter(deadline: .now() + 0.5)
observer.onCompleted()
return Disposables.create()
.share()
shareObservable.subscribe()
shareObservable.subscribe()
输出如下:
inside block
如果我从shareObservable
中删除.share
,我会看到:
inside block
inside block
这个例子的重点是我第二次订阅了同一个observable
,但还没有完成,所以块内的逻辑不会被执行。
如果你现在有什么误解,请告诉我。
You can read more about share
, shareReplay
, shareReplayLatesWhileConnected
, etc。
【讨论】:
以上是关于RxSwift 对一个 observable 的多个订阅的主要内容,如果未能解决你的问题,请参考以下文章
在 RxSwift 中,我如何对 observable 未发送任何事件进行单元测试?
rxswift:如何获取 Observable<Any> 导致 Observable<[Category]> 的组合?
RxSwift:延迟 observable 直到另一个 observable 完成?