Development/RxSwift
RxSwift) Conditional Operators(amb)
Tunko
2022. 6. 6. 20:38
amb
amb연산자는 두개 이상의 옵저버블 중에 먼저 이벤트가 발생한 것에서만 구독을 합니다. 이후 다른 옵저버에서 Next이벤트가 발생해도 무시됩니다.
let disposeBag = DisposeBag()
enum TunkoError: Error {
case error
}
let subject1 = PublishSubject<String>()
let subject2 = PublishSubject<String>()
let subject3 = PublishSubject<String>()
Observable.amb([subject1, subject2, subject3])
// subject1.amb(subject2) // 두개의 옵저버블일때 문법
.subscribe { print($0) }
.disposed(by: bag)
subject1.onNext("🍊")
subject2.onNext("🍓")
subject3.onNext("🍎")
subject2.onCompleted()
subject3.onError(TunkoError.error)
출력
next(🍊)
출력결과를 보면 subject2, subject3 의 next, error, completed 전부 무시된것을 확인할 수 있습니다.
반응형