2017-07-16 127 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