"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > Rx Observable은 기본적으로 Cold 상태입니까? '게시'와 '공유'를 통한 데이터 흐름 이해

Rx Observable은 기본적으로 Cold 상태입니까? '게시'와 '공유'를 통한 데이터 흐름 이해

2024년 11월 15일에 게시됨
검색:705

 Are Rx Observables Cold by Default?  Understanding the Flow of Data with  `publish` and `share`

핫 및 콜드 Observable: 데이터 흐름 이해

모든 Rx Observable은 기본적으로 Cold입니까?

기본적으로 , 주제를 제외한 모든 Rx 관찰 가능 항목은 콜드입니다. 즉, 구독한 관찰자가 한 명 이상 있을 때만 값을 방출합니다.

Cold Observable을 Hot Observable로 전환하는 Rx 연산자

두 개의 주요 연산자가 있습니다. Cold Observable을 Hot Observable로 변환할 수 있습니다:

  • publish: 반환 연결될 때만 값을 방출하기 시작하는 연결 가능한 Observable입니다.
  • share: 게시와 유사하지만 첫 번째 관찰자가 구독할 때 Observable을 자동으로 연결합니다.

withLatestFrom 연산자 및 Cold Observables

withLatestFrom은 차가움을 변경하지 않습니다. 또는 관찰 가능한 것의 뜨거움. 귀하의 예에서:

  • cold$.withLatestFrom(sth$,...)는 여전히 콜드 Observable입니다.
  • withLatestFrom을 사용하여 여러 Observable이 cold$를 구독하는 경우 구독 시간에 관계없이 각각 동일한 값 시퀀스를 사용합니다.

Rx.fromEvent 및 Hot/Cold 동작

CodePen 예제에서 관찰한 불일치는 Rx.fromEvent 관찰 가능 항목을 구독할 때가 아니라 요소를 클릭할 때만 이벤트가 발생한다는 사실에 기인합니다. 이로 인해 Observable에 대한 각 구독은 다른 이벤트를 받습니다.

Cold Observable에 대한 단순화된 흐름 다이어그램

콜드 Observable에 대한 단순화된 데이터 흐름을 설명하려면 다음을 수행하세요.

Source -> Observer1 -> Observer2

Hot에 대한 단순화된 흐름 다이어그램 Observables

핫 Observable의 경우 흐름은 다음과 같습니다.

Source -> Subject -> Observer1 -> Observer2

주제는 중앙 허브 역할을 하며 멀티캐스트 수신 구독한 모든 관찰자에게 데이터를 보냅니다.

멀티캐스팅 연산자 (게시/공유)

멀티캐스팅 연산자는 내부적으로 주제를 생성하고 연결 가능한 Observable을 반환합니다. Observable이 연결되면 주체는 업스트림 Observable을 구독하고 구독한 모든 관찰자에게 데이터를 멀티캐스트합니다.

연산자 사용 시 데이터 흐름 고려

데이터 흐름 이해 그리고 운영자의 행동이 중요합니다. 관찰 가능 항목이 핫하더라도 후속 연산자가 핫 또는 콜드 동작에 어떤 영향을 미칠 수 있는지 고려하는 것이 중요합니다.

최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3