RxSwift 对一个可观察对象的多个订阅
RxSwift multiple subscriptions to one observable
我知道如果我想对一个可观察对象进行多个订阅,我需要使用 .share() 运算符,但我不明白为什么?
我正在寻找一些基于本地数据(而非网络)的示例来演示使用 .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。
我知道如果我想对一个可观察对象进行多个订阅,我需要使用 .share() 运算符,但我不明白为什么?
我正在寻找一些基于本地数据(而非网络)的示例来演示使用 .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。