반응형
deferred
- 구독자가 구독하기 전까지 옵저버블을 생성을 지연시켜, 구독 시점에 각 구독자 별로 새로운 옵저버블을 생성
- 구독 시점에 항상 Observable 을 생성하므로 최신 데이터를 제공하는 데 사용될 수 있음. (네트워크 요청 등)
구현부
public static func deferred(_ observableFactory: @escaping () throws -> Observable<Element>)
-> Observable<Element> {
Deferred(observableFactory: observableFactory)
}
예시 코드
func createObservable() -> Observable<Double> {
return Observable.just(Date().timeIntervalSince1970)
}
Observable<Int>.interval(.seconds(3), scheduler: MainScheduler.instance)
.take(3)
.flatMap { _ -> Observable<Double> in
return Observable<Double>.deferred { createObservable() }
}
.subscribe(onNext: { value in
print("현재 시간:", value)
})
.disposed(by: disposeBag)
위 코드는 예시 출력을 위해 interval 을 사용했지만, 버튼 탭 동작과 같은 트리거를 이용해서 해당 시점에 원하는 처리를 해줄 수 있음.
부족한 점 피드백해주시면 감사합니다 :)
Ref.
반응형
'RxSwift' 카테고리의 다른 글
[RxSwift] Relay (0) | 2024.03.11 |
---|---|
[RxSwift] Traits Part 2. (2) | 2024.03.08 |
[RxSwift] Traits Part 1. (0) | 2024.03.08 |
[RxSwift] Error Handling (0) | 2024.03.08 |
[RxSwift] Time Based Operators (0) | 2022.07.18 |
댓글