【问题标题】:RxSwift multiple subscriptions to one observableRxSwift 对一个 observable 的多个订阅
【发布时间】:2017-07-16 12:30:40
【问题描述】:

我知道如果我想对一个 observable 进行多个订阅,我需要使用 .share() 运算符,但我不明白为什么?

我正在寻找一些基于本地数据(不是网络)的示例,以演示使用 .share() 和不使用它的区别。

运营商真正在做什么 - 使用以前订阅的数据还是创建新的?

【问题讨论】:

    标签: ios swift rx-swift


    【解决方案1】:

    我写了一个虚构的小例子:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-02
      • 2020-12-06
      • 2017-03-02
      • 1970-01-01
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多