user2001850
user2001850

Reputation: 487

Will combinelatest trigger doOnUnsubscribe of its children

Not sure if the combined observable delegates doonunsubscribe to its sources.

If not is there a simple way to trigger the unsubscribles of its children?

In code:

observable o = observable.combinelatest(o1, o2);

If something triggers unsubscribe of o will it trigger the unsubscribe of o1 and o2?

Upvotes: 0

Views: 1007

Answers (1)

akarnokd
akarnokd

Reputation: 70007

Not sure what you mean.

Unsubscription is propagated to both o1 and o2 but if you want to perform custom actions, you have to use doOnUnsubscribe on all relevant parties:

Observable<T> o = Observable.combineLatest(
    o1.doOnUnsubscribe(() -> { }),
    o2.doOnUnsubscribe(() -> { }))
.doOnUnsubscribe(() -> { });

o.take(1).subscribe();

But note that these are chain-global (instead of per-subscriber) actions and a second subscription/unsubscription to o may call them again. If you need per-subscriber resource management, look at the using operator.

Upvotes: 1

Related Questions