본문 바로가기
iOS/RxSwift

[RxSwift] Create Operators [2]

by 최지철 2023. 10. 30.
728x90
반응형

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이벤트를 전달하고 옵저버블을 정상적으로 종료시킨다

 

 

728x90
반응형

'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