Как получить обратный вызов, когда каждый наблюдатель такой горячей, как ConnectableObservable, завершится? - PullRequest
0 голосов
/ 28 мая 2019

Я ищу обратный вызов 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 раза (по одному для каждого наблюдателя)

1 Ответ

0 голосов
/ 29 мая 2019
   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 { ... }
...