2016-08-13 2 views
0

프로젝트에서 많은 모듈이 있습니다. 각 모듈은 다른 모듈/모듈에서 방출 된 데이터를 수신하려고 할 수 있습니다.Rx 구독하기 전에 Observable 만든

해결하려는 문제는 관찰 가능 A를 구독 할 때이 관찰 가능 항목이 아직 작성되지 않았을 수 있다는 것입니다. 이 문제를 해결하기 위해 두 가지 접근 방법이 논의됩니다.

  1. 관측 가능한 레지스트리 싱글 톤이 있습니다. 관찰 가능이 준비 될 때마다 레지스트리에 쌍을 넣고 레지스트리가 변경된 모든 모듈에 알립니다. 각 모듈은이 알림을 듣고 관심있는 변경인지 여부를 결정합니다. 관찰 대상이 준비되었다는 통지를 받으면 구독하십시오. 관찰 가능 항목이 제거되면 레지스트리를 업데이트하고 해당하는 쌍을 삭제 한 다음 모듈에 알립니다. 모듈은 구독을 취소합니다.
  2. 수신 된 event bus. Subject을 사용하십시오 : 싱글 톤 주제를 작성하십시오. 그런 다음 이벤트 또는 데이터 또는 항목을 방출해야 할 때마다이 주제에서 방출하십시오. 가입자의 경우 특정 주제에 대한 필터 만 사용하여 특정 이벤트를 구독 할 수 있습니다.

첫 번째 방법은 매우 간단 해 보이며, 왜 좋지 않은지 말할 수 없습니다. 하지만 그것은 나에게 확장 성이 없다. 두 번째 방법은 oto/eventbus를 Rx로 대체하는 권장 방법입니다.

이러한 접근 방식에 대한 의견이 있으십니까?

답변

0

제게는 첫 번째 방법이 그렇게 간단하고 다루기가 쉽지 않습니다. 가입자는 주제에 가입하고 해당 주제에 대한 주제가있을 때마다 이벤트 수신을 시작할 수 있으며, 신경 쓰지 않아도 새로운 이벤트 소스가 있는지 여부를 알 수 없습니다.

버전 2의 확장 된 변형 인 RxHub library을 사용합니다. 주제/태그별로 다른 행동을 허용하므로 매우 유연합니다.

관련 문제