0
据我所知,如果我想多个订阅一个observable我需要使用.share()运算符,但我不明白为什么?RxSwift多订阅一个observable
我正在寻找一些基于本地数据(不是网络)的例子来演示使用.share()和没有它之间的区别。
运营商真正做的是什么 - 使用之前订阅的数据或创建新的数据?
据我所知,如果我想多个订阅一个observable我需要使用.share()运算符,但我不明白为什么?RxSwift多订阅一个observable
我正在寻找一些基于本地数据(不是网络)的例子来演示使用.share()和没有它之间的区别。
运营商真正做的是什么 - 使用之前订阅的数据或创建新的数据?
我写了一个小虚构的例子:
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。