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