Какой оператор rxSwift использовать в этом сценарии? - PullRequest
0 голосов
/ 29 апреля 2020

Вот мой сценарий. У меня есть один предмет, который используется вместе с другим предметом в комбинат последних. Все идет нормально. Теперь я делаю sh onCompleted по одному из предметов, но CombineLatest по-прежнему работает, когда другой субъект отправляет какое-либо событие.

Что я хочу, так это то, что как только один из предметов завершен, я хочу объединитьПоследний перестать работать. Является ли CombineLatest подходящим оператором для использования здесь? Или есть другой оператор?

1 Ответ

1 голос
/ 29 апреля 2020

Вы должны использовать оператор takeUntil:

let subject1 = PublishSubject<Void>()
let subject2 = PublishSubject<Void>()
let subjectWasCompleted = Observable<Void>
    .merge(
        subject1.ignoreElements().andThen(.just(())),
        subject2.ignoreElements().andThen(.just(()))
    )

Observable.combineLatest(subject1, subject2)
    .takeUntil(subjectWasCompleted)
    .subscribe()
    .disposed(by: disposeBag)
...