기본적으로 RxSwift에서 Scheduler는 멀티쓰레딩.
즉, 병렬작업을 하는 기능 객체이며, 기존에 우리가 알던 큐를 매핑하는 기능이다.
많은 Rx를 처음 공부하는 분들이 observeOn과 subscribeOn 두가지가 있는데, 이 두가지의 차이점
그리고 언제써야하는지 등...
여기서 많은 어려움을 겪는 것 같고 나도 처음 마주했을땐 아리송 했다.
알 것 같다가도 모르겠는
아래의 포스트가 많은 도움이 되어 포스트한다.
처음에 내가 접했던 오류는 subsctibeOn은 subscribe 클로저에서 실행 할 것을 정하는게 아니야?
라고 생각했지만 그게 아니였다.
아래를 명확히 기억하면 이해하기 쉬울 것 같다
observeOn은 어떤 큐에서 관찰된 값을 처리할지.
subscribeOn은 어떤 큐에서 값을 가져오는 과정을 처리할지.
위와 같이 생각하면 쉽게 생각할 수 있을 것 같다.
그럼 이제 코드로 한번 보자.
observeOn은 아래인 관찰된 값을 처리하는 과정에 영향을 미치고 스케쥴러에서 메인큐에서 처리를 할 수 있도록한다.
연산자는 여러번 동작이 될 수 있기 때문에 observeOn은 당장 아래에 있는 '다운 스트림'에 영향을 미친다.
또 동작하는 연산자마다 다른 큐에서 처리하고 싶을 수 있으므로 여러개의 observeOn을 가질 수 있다.
subscribeOn은 값을 가져오는 과정인 생성 단계에 영향을 미치고 백그라운드로 처리를 할 수 있도록 한다.
값을 가져오는 생성 단계는 한번만 있을 수 있으므로 최초 한번 호출되는 subscribeOn만 유효하게 된다.
많은 사람들이 subscribeOn은 위에만 영향을 미치고 observeOn은 아래만 영향을 미친다는 말을 해서 그 부분에서 명확히 이해되지 않았지만 생성과정, 처리과정을 나누어 생각하니 쉽게 이해할 수 있었다.