• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

amb 연산자

21.10.24 16:32 작성 조회수 137

0

예제에서 amb 연산자에 입력값 observable 중에서 두번째, 세번째 observable은 메시지 발행 자체를 안하는걸까요?

amb 연산자 다이어그램과 예제를 보고 출력결과를 예상했을 때, 두번째, 세번째 observable의 데이터가 amb() 소비자에게 전달만 안될 뿐이지, 데이터를 발행하고 종료가 되면 doOnComplete()에 있는 로그가 찍히지 않을까 생각했었거든요.

# branch A's sales

# 완료

# branch B's sales

# branch C's  sales

이런식으로 로그가 찍힐거라고 예상했었어요. 제가 어떤 부분을 잘못 생각하고 있는걸까요?

답변 1

답변을 작성해보세요.

2

윤정님, 안녕하세요?

좋은 질문을 해주셨어요.

윤정님, 말씀대로 amb 마블 다이어그램이 두번째, 세번째 Observable도 Downstream 에 데이터를 통지를 하지만 전달은 되지 않고 무시가 되는것처럼 그려져 있네요. 제 생각에는 마블 다이어그램이 잘못 그려져있는것 같다라는 생각이 들어서 RxJava 3.x 문서를 좀 찾아보았더니 2.x 와는 다르게 아래처럼 정정이 되어 있었습니다.

마블 다이어 그램을 보시면 노란색 동그라미가 포함된 Observable에서 노란색 동그라미가 통지가 되면 나머지 Observable 들은 dispose()가 호출되어서 데이터 통지가 취소되는것을 볼 수 있습니다. 

 

이건 제가 강의에서 놓친 부분인데 잘 지적해주셨네요. 올바르게 다시 설명 드릴 수 있어서 다행입니다.

다른 질문 있으시면 또 글 남겨주세요. 

감사합니다.

케빈 안녕하세요~!

3.x 마블다이어그램으로 추가설명까지 해주셔서 완벽하게 이해했습니다. 감사드려요^^
2부도 열심히 들을게요!