[RxJava 공부기록] 2022-05-22

식빵·2022년 5월 22일
0

Study Memo

목록 보기
5/5

쓸데없는 짤로 시작하는 2022-05-22 RxJava 공부내용 기록글이다.


doOnNext 와 onNext

RxJava 를 공부하는데 doOnNext 와 onNext 가 묘하게 헷갈려서 무슨 차이인지 알아봤다.

일단 참고한 링크는 아래 3가지이다.

결론부터 말하자면 PublisherSubscriber 사이에는 많은 연산자 (ex: map, filter)들이 chain 형식으로 이어지게 되는데, 이런 선언형 방식으로 프로그래밍을 작성하다보니 그 연산자 체인 사이에 어떤 별개의 작업(ex: 디버깅, 로깅)을 하지 못한다.
이를 위해서 RxJava 에서는 doOnXXX 연산자를 제공한다.
이 연산자 RxJava의 여느 연산자들과 마찬가지로 chain 형식으로 작성할 수 있기 때문에,
디버깅이나 로깅같은 부수효과를 적용할 수 있다.



부수효과(side-effect)

클로저나 스칼라 같은 함수형 프로그래밍에서 일반적으로 순수 함수의 역할을 어떤 값을 계산해서 반드시 리턴하는 것으로 정의하는데, 리턴 값이 없을 경우 보통 순수 함수의 목적이 아닌 다른 목적으로 작업을 처리한다고 여기며 그때 이 함수를 부수 효과(side-effect)를 위한 함수라고 지칭합니다.

side-effect라는 용어가 보통은 우리말로 부작용이라는 의미로 많이 사용을 하는데 함수형 프로그래밍에서는 side-effect를 보통 앞에서 설명한 의미로 사용을 합니다.



asynchronous boundaries

RxJava 와 관련된 글을 읽다보면 종종 이런 표현을 본다.
대체 뭔뜻인지 감이 안 잡혀서 검색해봤고, 아래와 같은 링크를 찾아냈다.

완벽하게 이해가 되는 건 아니지만, 대충 하나의 타임라인(간단하게 Observable 이라고 생각하자)에 대한 데이터 생산 또는 처리를 서로 다른 쓰레드에서 처리가 되도록하여 비동기적인 처리를 하는데, 이때 서로 다른 쓰레드에서 독립적인 영역에서 비동기적으로 처리할 때, 그 영역을 추상적으로 표현한 것이 asynchronous boundaries 라고 생각하면 된다.

(100% 맞는 표현인지는 모르겠지만, 내 수준에서 이해하면 딱 이정도다)

굉장히 심오하게 파고 드는 글도 있다.
보고싶다면 보자. 난 중간까지 읽다가 도망쳤다 🏃‍♂️



profile
백엔드를 계속 배우고 있는 개발자입니다 😊

0개의 댓글