[javascript] Subject와 Observable의 차이점은?
  1. Subject: Subject는 Observable과 Observer의 역할을 모두 수행할 수 있는 특별한 종류의 Observable입니다. Subject는 데이터를 발행하고 여러 개의 Observer에게 동시에 전달할 수 있습니다. 이는 한 번의 구독으로 여러 개의 Observer에게 데이터를 전달할 수 있으므로, 데이터를 다중으로 공유하고 구독하는 동안에도 계속해서 새로운 데이터를 발행할 수 있습니다.

예를 들어, 다수의 컴포넌트에서 동일한 데이터를 구독하고자 할 때 Subject를 사용할 수 있습니다. 한 번의 구독으로 데이터를 전달하면, 각 컴포넌트는 동시에 데이터를 수신할 수 있습니다. 또한, Subject는 일회성이 아니라 계속해서 데이터를 전달할 수 있기 때문에 동적으로 데이터를 업데이트할 수 있는 상황에 유용합니다.

  1. Observable: Observable은 데이터 스트림을 나타내는 객체입니다. Observable은 데이터를 발행하고 Observer에서 이를 구독하는 패턴으로 동작합니다. Observable은 구독자에게 데이터 스트림을 알리는 역할을 합니다. 즉, Observer는 Observable에 구독을 요청하고, Observable은 새로운 데이터를 발행할 때마다 Observer에게 데이터를 전달합니다.

Observable의 가장 큰 특징은 데이터의 라이프사이클을 완전히 제어할 수 있다는 점입니다. 새로운 데이터가 발행될 때마다 동작을 수행하도록 구독자를 조작할 수 있으며, 데이터의 발행/정지/에러 등을 다양하게 제어할 수 있습니다.

요약하자면, Subject는 Observable과 Observer의 역할을 동시에 수행할 수 있어 데이터를 다중으로 공유하거나 동적으로 업데이트할 때 유용합니다. Observable은 데이터 스트림의 발행과 구독을 분리하여 관리할 수 있는 객체로, 데이터 스트림의 라이프사이클을 완전히 제어할 수 있습니다.

더 자세한 정보는 RxJS 공식 문서를 참조하세요. RxJS 공식 문서