Development/RxSwift
RxSwift) Operators 란?
Tunko
2022. 5. 30. 12:46
연산자란?
연산자는 대부분 옵저버블 상에서 동작하고 새로운 옵저버블을 리턴합니다. 아래 예제에서 사용되는 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 이 방출됩니다.
반응형