2017-07-16 170 views
0

據我所知,如果我想多個訂閱一個observable我需要使用.share()運算符,但我不明白爲什麼?RxSwift多訂閱一個observable

我正在尋找一些基於本地數據(不是網絡)的例子來演示使用.share()和沒有它之間的區別。

運營商真正做的是什麼 - 使用之前訂閱的數據或創建新的數據?

回答

3

我寫了一個小虛構的例子:

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