Intro) subject의 observer 역할은?

<aside> 💡 우리는 이전 아티클에서 subject가 Observable로 하는 역할들에 대해서 배울 수 있었다. 근데 subject는 observer 역할도 할 수 있다고 했는데..?

근데 여기서 문득 드는 생각! 우리가 Observer를 만든적이 있나…?

</aside>

우리는 subscribe를 하면 자동으로 만들어주는 observer를 사용했고

⇒ 생각보다 Observer가 어떤 역할을 하는지 모른다…

so. Observer를 먼저 더 파보자!

1. Observer

단순히 관찰자라고 생각하면,, 그건 그냥 영단어 외우는거고 임마! 자세히 무슨 역할을 하는지 알아보자

1-1. ObserverType & on 메소드

일단 우리가 앞에서도 배웠듯이, Observer의 역할을 수행하기 위해선

ObserverType 프로토콜을 채택해야 한다.

그리고 이 프로토콜은 on(_ event: Event<Element>) 메소드를 필수적으로 요구!

public protocol ObserverType {
		func on(_ event: Event<Element>)
}

여기서 Event 타입은 아래와 같이

newt, error, completed이 정의된 열거형 인스턴스이다.

@frozen public enum Event<Element> {
		case next(Element)
		case error(Swift.Error)
		case completed
}

Q. 언제 on 메소드가 불리나요?

아래 Cold Observable 만드는 방법 중 just를 예시로 들면

  1. init할 때 받았던 element를 저장하고 있다가

  2. subscribe가 불릴 경우 그와 동시에 파라미터로 받은 observer에 대고 on(.next(self.element)) 하면서 항목 방출