这是我的场景。我有一个主题与 combineLatest 中的另一个主题一起使用。到现在为止还挺好。现在我在其中一个主题上推送 onCompleted,但是当另一个主题推送某个事件时,CombineLatest 仍在工作。
我想要的是,一旦任一科目完成,我希望 combineLatest 停止工作。CombineLatest 是否适合在这里使用?或者有没有其他运营商可用?
这是我的场景。我有一个主题与 combineLatest 中的另一个主题一起使用。到现在为止还挺好。现在我在其中一个主题上推送 onCompleted,但是当另一个主题推送某个事件时,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)