在这种情况下使用哪个 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)
这是我的场景。我有一个 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)