在这种情况下使用哪个 rxSwift 运算符?

Which rxSwift operator to use in this scenario?

这是我的场景。我有一个 Subject 与 combineLatest 中的另一个 Subject 一起使用。到目前为止,一切都很好。现在我在其中一个主题上推送完成,但是当另一个主题推送某个事件时 CombineLatest 仍在工作。

我想要的是,只要其中一个主题完成,我就希望 combineLatest 停止工作。 CombineLatest 是在这里使用的正确运算符吗?或者还有其他可用的运算符吗?

您应该使用 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)