작성
·
451
0
doOnNext에서 로직을 실행하는것이랑 subscribe안에서 로직을 실행하는것이랑 어떤 차이가 있는건가요?
순서는 doOnNext가 먼저 실행되는것으로 보이는데
재구독이 일어났을때 핫 퍼블리셔랑, 콜드 퍼블리셔의 차이로 데이터 소비 패턴이 달라진다 정도로 이해하면 되는걸까요?
실무에서 사용되는 코드가 subscribe();로 별도에 람다식이 없고 전부 doOnNext안에서 처리하는 로직으로 이루어져 있어서 문의 드립니다.
답변 2
0
0
안녕하세요?
doOnNext 내에서 실행되는 로직과 subscribe안에서 실행되는 로직이 어떤 차이점이 있는지 질문 주셨는데요.
doOnNext()는 Upstream 쪽에서 emit 되는 데이터가 정상적으로 잘 emit 되고 있는지 어떤 데이터가 emit 되고 있는지를 확인하기 위한 용도로 주로 사용되는데 doOnNext 바로 위에 있는 Operator에서 emit 되는 데이터를 전달 받아서 로그로 출력한다든지 하는 부가적인 작업에 사용할 수 있습니다.
공식 문서에서 확인을 해 보시면 아시겠지만 doOnXXXX()으로 시작하는 Operator는 Operator 분류 목록에서 peek 할 수 있는 Opertor로 분류가 되어 있는데, 여기서 peek의 의미는 Reactor Sequence의 내부를 엿보다
라는 의미입니다. 즉, 내부 동작 과정을 확인하기 위한 용도로 사용한다는 의미로 보시면 될 것 같아요.
subscribe()는 말 그대로 여러 단계의 Upstream Operator를 거친 후에 최종 데이터를 전달 받아서 소비하는 역할을 합니다.
실제 업무에서 사용되는 로직을 제가 잘 몰라서 구체적으로 답변 드리기는 힘들겠지만
doOnNext() 안에서 모든 처리를 한다면 기능적으로 역할 분리가 제대로 되지 않았을 가능성도 있을 것 같습니다.
답변이 도움 되셨길 바랄게요.
감사합니다!