【问题标题】:How to get a callback when every observer of a hot like ConnectableObservable complete?当 ConnectableObservable 之类的热门观察者完成时,如何获得回调?
【发布时间】:2019-10-14 02:56:01
【问题描述】:

我正在为每个观察者终止时调用的 ConnectableObservable 搜索 doOn... 回调

       val gatewayItems = viewModel.getGatewayItems(gateways!!)
                .observeOn(Schedulers.io())
                .take(1)
                .publish()
                .autoConnect(2)

            gatewayItems.subscribe { sharedGateways -> sharedGatewaysAdapter.submitList(sharedGateways) }

            gatewayItems.subscribe { sharedGateways -> privateGatewaysAdapter.submitList(privateGateways) }

当我的两个观察者都发出终端事件信号时,我想回调我的多播热可观察对象

我尝试将 doOnTerminate 和 doOnComplete 运算符放在我的父多播 observable 上,但似乎这些回调被调用了 2 次(每个观察者一个)

【问题讨论】:

    标签: android observable rx-java2 multicast observers


    【解决方案1】:
       val gatewayItems = viewModel.getGatewayItems(gateways!!)
                .observeOn(Schedulers.io())
                .take(1)
                .doOnComplete { ... }
                .doOnTerminate { ... }
                .publish()
                .autoConnect(2)
    

    .doOnComplete.doOnTerminate 都为我工作。

    编辑:您可能会以错误的顺序附加do... 运算符。例如,这些doOnComplete 都不起作用:

       val gatewayItems = viewModel.getGatewayItems(gateways!!)
                .observeOn(Schedulers.io())
                .doOnComplete { ... }
                .take(1)
                .publish()
                .autoConnect(2)
                .doOnComplete { ... }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多