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()