当像 ConnectableObservable 这样的热门观察者完成时,如何获得回调?

How to get a callback when every observer of a hot like ConnectableObservable complete?

我正在寻找一个 doOn... 回调,用于在每个观察者终止时调用的 ConnectableObservable

       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 运算符放在我的父级多播可观察对象上,但是,这些回调似乎被调用了 2 次(每个观察者调用一次)

   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 { ... }