这是我的方案。我有一个Subject和另一个Subject一起被用于 combineLatest。到目前为止一切正常。现在我在其中一个subjects上推送onCompleted,但是当另一个subjects推送一些事件时,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)