훌이
후리스콜링개발
훌이

블로그 메뉴

  • 왈 (iOS APP)
  • Github
전체 방문자
오늘
어제
  • 전체 (171)
    • ⭐️ 개발 (140)
      • JAVA (4)
      • Web (5)
      • iOS & Swift (94)
      • iOS Concurrency (4)
      • Rx (18)
      • Git (6)
      • WWDC (1)
      • Code Refactor (3)
      • Server (1)
    • ⭐️ Computer Science (22)
      • 운영체제 (10)
      • 네트워크 (5)
      • PS (7)
    • 경제시사상식 (8)
    • 기타 등등 (0)

인기 글

최근 글

07-05 03:11

티스토리

hELLO · Designed By 정상우.
훌이

후리스콜링개발

[Rx] Conditional Operator
⭐️ 개발/Rx

[Rx] Conditional Operator

2023. 3. 19. 23:52
728x90
반응형

Conditional Operator

amb

여러 옵저버블 중에서 가장 먼저 이벤트를 방출하는 옵저버블을 선택하는 것

right 옵저버블이 left 옵저버블보다 먼저 방출됐기 때문에

left 옵저버블은 무시되고, rigth 옵저버블만 구독된다.

 

많은 서버 연결 시도 중 가장 먼저 응답을 준 서버와 통신하고 싶은 경우 사용한다.

 

let bag = DisposeBag()

enum MyError: Error {
    case error
}

let a = PublishSubject<String>()
let b = PublishSubject<String>()
let c = PublishSubject<String>()

// 소스 옵저버블이 2개로 제한될 경우
a.amb(b)
    .subscribe { print($0) }
    .disposed(by: bag)

a.onNext("A") // a가 먼저 이벤트를 방출해서 b는 무시됐음
b.onNext("B")
//next(A)

b.onCompleted() // b는 무시
a.onCompleted() // a가 전달하는 이벤트는 구독자에게 바로 전달
//completed




// 3개 이상의 옵저버블을 전달할 경우 사용 - 모든 소스 옵저버블을 배열 형태로 전달
Observable.amb([a, b, c])
    .subscribe { print($0) }
    .disposed(by: bag)

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'⭐️ 개발 > Rx' 카테고리의 다른 글

[Rx] Sharing Operator  (0) 2023.03.22
[Rx] Time Based Operator  (0) 2023.03.20
[Rx] Filtering Operator  (0) 2023.03.18
[Rx] Create Operators  (0) 2023.03.17
[Rx Operator 시리즈] 4. flatMap / flatMapFirst / flatMapLatest  (0) 2023.01.19
    '⭐️ 개발/Rx' 카테고리의 다른 글
    • [Rx] Sharing Operator
    • [Rx] Time Based Operator
    • [Rx] Filtering Operator
    • [Rx] Create Operators
    훌이
    훌이

    티스토리툴바