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

		}

}

Observable

Observer 는 Observable을 구독한다. Observable이 배출하는 하나 또는 연속된 항목에 옵저버는 반응한다.

결과적으로 전체 코드 실행 시간은 그 중에 실행 시간이 가장 긴 시간 만큼만 걸린다.

일반적인 메서드 호출

  1. 메서드를 호출한다.
  2. 메서드가 리턴한 값을 변수에 저장한다.
  3. 결과 값을 가진 변수를 가지고 필요한 연산을 수행한다.

비동기 모델

  1. 비동기 메서드 호출로 결과를 리턴받고 필요한 동작을 처리하는 메서드를 정의한다.
  2. 옵져버블로 비동기 호출을 정의한다.
  3. 구독을 통해 옵저버를 옵저버블 객체에 연결 시킨다.
  4. 메서드 호출로 결과가 리턴될 때마다, 옵저버의 메서드는 리턴 값 또는 항목들을 사용해서 연산을 시작한다.

onNext

옵져버블은 새로운 항목을 배출할 때마다 이 메서드 호출. 이 메서드는 옵져버블이 배출하는 항목을 파라미터로 전달 받는다.