2017-07-16 3 views
0

1つのオブザーバブルに複数のサブスクリプションを追加する場合、.share()演算子を使用する必要がありますが、なぜ正確に理解できないのでしょうか?RxSwift複数のサブスクリプションを1つのオブザーバブルに変換する

私はローカルデータ(ネットワークではない)に基づいて、.share()を使用する方法と使用しない方法の違いを実証するいくつかの例を探しています。

オペレータは実際に何をしていますか?以前のサブスクリプションのデータを使用するか、新しいものを作成しますか?

答えて

3

私は小さな架空の例書いている:私は、私が表示されますshareObservableから.shareを削除した場合

inside block 

:以下の出力で

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 
inside block 

この例の要点は、同じを購読することですまだ完了していない2回目です。ブロック内のロジックは実行されません。

今までに何か誤解があった場合は教えてください。

You can read more about share, shareReplay, shareReplayLatesWhileConnected, etc

関連する問題