본문 바로가기
2023년 이전/ReativeX

마블 다이어 그램 - marble diagrams

by JeongUPark 2019. 10. 18.
반응형

[이 글은 RxJava 프로그래밍 : 리액티브 프로그래밍 기초부터 안드로이드까지 한번에 책을 공부하면서 정리한 내용입니다.]

마블 다이어그램이라는 것이 있습니다. 이는 RxKotlin을 이해하는 핵심 도구 입니다. 마블 다이어그램의 예를 보면서 이해하는 것이 가장 좋은 방법인것 같아 ReactiveX 홈페이지에서 마블 다이어그램을 가져와서 설명하겠습니다.

1. 실선은 Obervable의 시간표시줄 입니다. 시간 순으로 데이터가 발행되는 것을 표현합니다.

2. Observable에서 발생하는 데이터 입니다. 시간 순서대로 별, 삼각형, 오각형, 원 등의 도형을 발행합니다. 데이터를 발행할 때는 onNext알림이 발생합니다.

3. Observable에서 데이터 발행을 완료했다는 의미입니다. 한번 완료하면 이후에는 더이상 데이터를 발행할 수 없습니다. 완료되면 onComplete 알림이 발생합니다.

4. 각 함수의 입력과 출력 데이터 입니다. 가운데 filp 박스는 함수를 의미합니다. filp 함수는 입력값을 뒤집는 함수입니다. 그래서 위 마블 다이어그램에서 위의 도형이 filpe을 지나면 뒤집히는 것을 확인할 수 있습니다.

5. 함수의 결과가 출력되는 시간 표시줄 입니다.

6. 함수가 입력 값을 처리할 때 발생한 에러를 의미합니다. 에러 발생 시 에는 onError가 발생합니다.

위의 그림은 

1.첫번째 Observable은 같은 모양이지만 색이 다릅니다.

2. 두번째 Observable은 같은 색상이지만 모양이 다릅니다.

3. combineLatest 함수를 통하여 첫 번째와 두 번째 Obserbable의 데이터들 (색상과, 모형)이 모두 들어왔을 경우 둘을 합성합니다.

4. 마름모와 첫번째 색을 합성한 결과가 나오고 두번째 색이 들어왔을 때는 이미 마름모가 입력 되어 있기 때문에 마름모에 두번째 색상이 합성된 결과가 나옵니다.

 

 

그림 출처 - http://reactivex.io/RxJava/javadoc/io/reactivex/Observable.html

 

반응형