繁体   English   中英

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

[英]Which rxSwift operator to use in this scenario?

这是我的场景。 我有一个主题与 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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM