관리 메뉴

김종권의 iOS 앱 개발 알아가기

[RxSwift] 7. share 본문

RxSwift/RxSwift 응용

[RxSwift] 7. share

jake-kim 2020. 9. 27. 01:28

share

* 원래 Observable은 subscribe될 때만 create클로저를 호출하여 Observable을 생성 (== subscribe한 횟수만큼 새로운 시퀀스 생성)

// API를 요청, 결과를 반환하는 시퀀스라 가정
let networkRequestAPI = Observable.of(100)

let result = requestMoreButton.rx.tap
    .flatMap { networkRequestAPI }

result
    .map { $0 > 0 }
    .bind(to: requestMoreButton.rx.isHidden)
    .disposed(by: bag)

result
    .map { "Count:\($0)" }
    .bind(to: remainCountLabel.rx.text)
    .disposed(by: disposeBag)
    

 

share() 연산자를 사용하면 Subscribe()할때마다 새로운 Observable 시퀀스가 생성되지 않고, 하나의 시퀀스에서 방출되는 아이템을 공유해 사용

 

let result = requestMoreButton.rx.tap
    .flatMap { networkRequestAPI }
    .share()
Comments