>  기사  >  웹 프론트엔드  >  Rx Observable은 기본적으로 Cold 상태입니까? '게시'와 '공유'를 통한 데이터 흐름 이해

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

Mary-Kate Olsen
Mary-Kate Olsen원래의
2024-10-29 22:40:29158검색

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

Hot 및 Cold Observable: 데이터 흐름 이해

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

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

Cold Observable을 Hot Observable로 바꾸는 Rx 연산자

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

  • publish: 연결 가능한 Observable을 반환하며, 연결된 경우에만 값을 방출하기 시작합니다.
  • 공유: 게시와 유사하지만 첫 번째 관찰자가 구독할 때 Observable을 자동으로 연결합니다.

withLatestFrom Operator 및 Cold Observables

withLatestFrom 관찰 대상의 차가움이나 뜨거움은 변하지 않습니다. 귀하의 예에서:

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

Rx.fromEvent 및 Hot/Cold 동작

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

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

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

Source -> Observer1 -> Observer2

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

Hot Observable의 흐름은 다음과 같습니다.

Source -> Subject -> Observer1 -> Observer2

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

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

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

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

데이터 흐름 이해 그리고 운영자의 행동이 중요합니다. Observable이 뜨겁더라도 후속 연산자가 Hot 또는 Cold 동작에 어떤 영향을 미칠 수 있는지 고려하는 것이 중요합니다.

위 내용은 Rx Observable은 기본적으로 Cold 상태입니까? '게시'와 '공유'를 통한 데이터 흐름 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.