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。