반응형
Observable 연산자
Observable 생성 연산자
- Create
직접적인 코드 구현을 통해 옵저버 메소드를 호출해 Observable을 생성한다
create는 Cancelable 프로토콜을 따르기 때문에 Disposable 형태를 반환해야한다.
Observable<Int> .create { observable in observable.onNext(0) observable.onNext(1) observable.onNext(2) observable.onCompleted() return Disposables.create() } .subscribe { item in switch item { case .next(let value): print(value) default: print("finished") } } .disposed(by: disposeBag)
- Deferred
옵저버가 구독하기 전까지는 Observable 생성을 지연하고 구독이 시작되면 옵저버 별로 새로운 Observable을 생성한다
var flag : Bool = false // 외부 조건에 따라 다른 Observable을 제공 Observable<Int> .deferred { flag.toggle() return flag ? Observable.from([1,2,3]) : Observable.from([4,5,6]) } .subscribe { item in switch item { case .next(let value): print(value) default: print("finished") } } .disposed(by: disposedBag)
- Empty / Never / Throw
아주 정확하고 제한된 행동을 하는 Observable을 생성한다
// complete을 내며 정상 종료되는 Observable Observable<Int>.empty() // 이벤트를 방출하지 않으며 종료하지 않는 Observable Observable<Int>.never() // error를 내며 이벤트를 방출하지 않는 Observable Observable<Int>.throw()
- From / Of
2개 이상의 이벤트를 전달하는 것에 사용되며 다른 객체나 자료 구조를 Observable로 변환한다.
Of는 Observable<타입> 자체를 반환하고 From은 배열 안의 요소들을 Observable로 반환한다.
let ofArray = Observable.of([1,2,3]) let fromArray = Observable.from([1,2,3])
- Interval
특정 시간별로 연속되는 정수형을 배출하는 Observable을 생성한다.
Observable<Int> .interval(.seconds(10), scheduler: MainScheduler.instance) .subscribe { print($0) } .disposed(by: disposedBag)
- Timer
지정된 시간이 지나고 난 후 항목을 하나 배출하는 Observable을 생성한다
// period: 후속 값을 산출하는 시간 Observable<Int> .timer(.seconds(10), period: .seconds(60), scheduler:MainScheduler.instance) .subscribe { print($0) } .disposed(by: disposedBag)
- Just
주어진 객체 하나 또는 객체 집합을 Observable로 변환한다. 변환된 Observable은 원본 객체들을 발행한다
Observable.just(1) Observable.just("hi")
- Range
시작 값부터 지정한 개수만큼 1씩 증가시킨 값의 정수를 발행하는 Observable을 생성한다
Observable .range(start: 10, count: 5) .subscribe { print($0) } .disposed(by: disposedBag) // next(10) // next(11) // next(12) // next(13) // next(14) // completed
- Repeat
특정 항목이나 연속된 항목들을 반복적으로 배출하는 Observable을 생성한다.
무한으로 생성하기에 take(count:) 메소드로 개수를 조절한다.
Observable .repeatElement("HEHE") .take(5) .subscribe { print($0) } .disposed(by: disposedBag)
반응형
'개발 > RxSwift' 카테고리의 다른 글
[RxSwift] Combining Observables & Error Handling Operators (0) | 2022.03.14 |
---|---|
[RxSwift] Filtering Observable (0) | 2022.03.11 |
[RxSwift] Transforming Observable (0) | 2022.03.10 |
[RxSwift] Observables (0) | 2022.03.08 |
[RxSwift] Traits, Subject, Scheduler (0) | 2022.03.07 |