@IBAction func onLoadImage(_ sender: Any) {
imageView.image = nil
_ = rxswiftLoadImage(from: loadingImageUrl)
.oberveOn(MainScheduler.instance)
.subscribe({ result in
switch result {
case let .next(image):
self.imageView.image = image
case let .error(err):
print(err.localizedDescription)
case .completed:
break
}
})
}
func rxswiftLoadImage(from imageUrl: String) -> Observable<UIImage?> {
return Observable.create { seal in
asyncLoadImage(from: imageUrl) { image in
seal.onNext(image)
seal.onCompleted()
}
return Disposabel.create()
}
}
Observer 는 Observable을 구독한다. Observable이 배출하는 하나 또는 연속된 항목에 옵저버는 반응한다.
결과적으로 전체 코드 실행 시간은 그 중에 실행 시간이 가장 긴 시간 만큼만 걸린다.
일반적인 메서드 호출
비동기 모델
옵져버블은 새로운 항목을 배출할 때마다 이 메서드 호출. 이 메서드는 옵져버블이 배출하는 항목을 파라미터로 전달 받는다.