var disposable: Disposable?
var disposeBag: DisPoseBag = Dispose
@IBAction func onLoadImage(_ sender: Any) {
imageView.image = nil
disposable =
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
}
}).disposed(by: disposeBag)
diposeBag.insert(diposable)
}
@IBAction func onCancel(_ sender: Any) {
// 동작중에 작업을 취소 시키는 행위.
diposable?.dispose()
// disposeBag에 담겨있는 작업들 다 취소
disposeBag = DisposeBag() // 새로 초기화 하면서 기존에 있던 작업들 dispose
}
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()
}
}