Observables에 대한 완전한 이해를 바탕으로 전적으로 문제가 있습니다.Observables를 사용하여 Angular2에서 각각 대기열에있는 이벤트의 대상을 처리합니다.
이것은 rx/js 및 Observables를 사용하는 Angular2 (v4.0.3) 프로젝트입니다.
나는 상태 서비스에서 이벤트를 보유 상태 저장소 있습니다
// Observable string sources
private currentEventStore = new BehaviorSubject<string>("");
// Observable string streams
public currentEvent$ = this.currentEventStore.asObservable();
// Service message commands
setCurrentEvent(nextEvent: string) {
this.currentEventStore.next(nextEvent);
}
내 구성 요소에 currentEvent $에 가입 이벤트를 수신하기를 한 다음에 행동한다.
this.stateSvc.currentEvent$
.subscribe(
currentEvent => {
this.currentEvent = currentEvent;
if (currentEvent != '') {
this.handleCurrentEvent(currentEvent);
}
});
제가하는 데 문제는 내가 '만들기'이벤트를 생성 할 때, 내 구독 기능은 이벤트를 선택하고를 생성하도록 저장소, 모든 이벤트를 축적하고 그들 모두에게 때마다 반환하는 것입니다 record - 첫 번째 패스에는 완벽하지만 두 번째 'create'이벤트가 생성되면 구독 된 함수는 2 개의 이벤트를 선택하고 2 개의 레코드를 만들고 다음 'create'이벤트에서 3 개의 레코드를 만드는 등의 작업을 수행합니다.
내가해야 할 일은 currentEvent $ store가 처리되지 않은 이벤트 만 포함 할 수 있도록 이벤트가 스트림에서 플러시되는 것입니다.
저장소를 플러시 할 수있는 방법이 있습니까? 아니면 내 기대와 구현에 여기에 실종 된 것이 있습니까?
'BehaviorSubject'가 수행하는 유일한 작업은 각 관찰자에게 구독시 전송되는 기본값을가집니다 (즉,'ReplaySubject '가하는 것입니다). 그것은 문제가 어딘가에 있고 BehaviorSubject를 사용하지 않고있는 값들을 저장하지 않습니다. – martin