Tunko Development Diary

RxSwift) Operators 란? 본문

Development/RxSwift

RxSwift) Operators 란?

Tunko 2022. 5. 30. 12:46

ReactiveX - Operators

연산자란?

연산자는 대부분 옵저버블 상에서 동작하고 새로운 옵저버블을 리턴합니다. 아래 예제에서 사용되는 from 연산자의 레퍼런스를 확인하면 -> Observable<Int> 을 리턴합니다.

static func from(_ array: [Int], scheduler: ImmediateSchedulerType = CurrentThreadScheduler.instance) -> Observable<Int>

따라서 연산자 뒤에 또다른 연산자를 이어서 사용할 수 있습니다.

연산자는 옵저버블이 데이터를 방출하기전에 해줍니다.

옵저버블이 데이터를 방출하는 시점은 옵저버가 구독하는 시점. 즉 .subscribe 하기전에 해줍니다.

subscribe는 최종적으로 데이터가 방출되는 결과라고 생각하면 편합니다.

위에서는 take연산자, filter연산자를 사용했습니다.

take연산자는 방출되는 요소중에서 인자값 수만큼 데이터를 방출합니다.

filter연산자는 원하는 값 조건을 적용합니다. 위에서는 짝수만 추출했습니다.

let bag = DisposeBag()

Observable.from([1, 2, 3, 4, 5, 6, 7, 8, 9])
    .take(5)
    .filter { $0.isMultiple(of: 2) }
    .subscribe { print($0) }
    .disposed(by: bag)
next(2)
next(4)
completed

즉 1,2,3,4,5,6,7,8,9 중에 5개

1,2,3,4,5 여기서 짝수만

2,4 만 방출됩니다.

호출 순서를 뒤바꾸면

Observable.from([1, 2, 3, 4, 5, 6, 7, 8, 9])
    .filter { $0.isMultiple(of: 2) }
    .take(5)
    .subscribe { print($0) }
    .disposed(by: bag)
next(2)
next(4)
next(6)
next(8)
completed

즉 1,2,3,4,5,6,7,8,9 중에

2,4,6,8 여기서 5개 만

2,4,6,8 이 방출됩니다.

반응형

'Development > RxSwift' 카테고리의 다른 글

RxSwift) PublishSubject 란?  (0) 2022.05.30
Subject 란?  (0) 2022.05.30
RxSwift) Disposables 란?  (0) 2022.05.30
RxSwift) Observables 과 Observers  (0) 2022.05.30
Reactive Programming 란?  (0) 2022.05.30
Comments