반응형
repeatElement
- 동일한 요소를 반복적으로 방출하는 옵저버를 생성
- while과 비슷, 고로 방출되는 요소의 갯수 꼭 제한해야함 -> 아니면 무한으로 쭈욱 방출
- take연산을 이용해 갯수 제한
Observable.repeatElement(element)
.take(7)
.subscribe { print($0) }
.disposed( by: disposebag)
deferred
- 특정 조건에 따라 옵저버블을 생성할 수 있다.
- if문 사용가능
- 즉시 옵저버블을 생성하는 create와 달리 구독을 해줘야 옵저버블이 생기기 때문에, 당장은 필요하지 않지만 필요한 상황에 구독하여 생성할 수 있다
- 네트워크 API에서 결과를 받아와 just처럼 옵저버블을 바로 만들어 주는 경우도 있지만, deferred를 통해 구독 전가지 해당 네트워크 요청을 시작하지 않도록 해줄 수 있다.
var touched = true
let factory = Observable<Int>.deferred {
touched.toggle()
if touched {
return Observable.of([1,2,3])
} else {
return Observable.of([4,5,6])
}
}
factory.subscribe(onNext: {
print($0)
}).disposed(by: disposeBag)
// 123
factory.subscribe(onNext: {
print($0)
}).disposed(by: disposeBag)
// 456
empty, error
- 요소를 방출하지 않는 연산자
- empty는 아무 것도 emit하지 않는 옵저버블을 생성하지만 정상적으로 종료시킨다
- error는 error이벤트를 전달하고 옵저버블을 정상적으로 종료시킨다
반응형
'iOS > RxSwift' 카테고리의 다른 글
[RxSwift] RxCocoa (binding, Traits, Driver..등) (0) | 2023.11.04 |
---|---|
[RxSwift] Erro 처리 catch, retry 연산자 (0) | 2023.10.31 |
[RxSwift] Create Operators [1] (0) | 2023.10.29 |
[RxSwift] Relay (1) | 2023.10.29 |
[RxSwift] Subject (0) | 2023.10.29 |