2017-12-11 5 views
-1

최근에 메모리 대신 디스크에서 데이터를 동적으로 검색하는 함수를 변환했으며 변수가 동 기적으로 반환되어 Observable을 반환하는 과정으로 이동했습니다.각도/Rxjs 조건부 중첩 된 Observables

이 변환의 일부로 모든 종속 함수는 Observables를 통해 비동기로 변환되어야하고 이러한 함수 중 하나는 범주에 대한 마지막 시나리오를 가져 오는 중첩 조건부 호출을 수행하거나 범주에 대한 이전 시나리오가없는 경우 가져 오기 생성 기본 시나리오 : 시나리오가 === null의 분기가 실행 generateScenario는()> 피 감시를 반환 것을 의미 감시 오브젝트 반환 this.defaultService.getDefault(category, value) 여기

public generateScenario(category: string, value: number = 1) : Observable<Scenario> 
{ 
    return this.getHistory(category).map(scenario => { 
     if(scenario === null) 
     { 
      return this.defaultService.getDefault(category, value); 
     } 
     else 
     { 
      return scenario; 
     } 
    }); 
} 

.

어떻게 이것을 전개하고 중첩 된 Observable을 반환하지 않습니까?

+0

'.do'는 뭔가를 반환하고 스트림 값을 변경하지 않으려는 경우입니다. – jonrsharpe

+0

@jonsharpe 미안하지만 샘플 코드에서 실수를했습니다. 실제로 map을 사용하려고했습니다. – cubiclewar

답변

0

또는 merge과 같이 RxJS의 다양한 병합 연산자를 사용하여이를 병합 할 수 있습니다. 이 경우, switch는 가장 적합한 것 같다

this.getHistory(category).switchMap(scenario => 
    scenario === null ? this.defaultService.getCategory(category, value) 
    : of(scenario) 
); 

of는 등/미개봉/평평 할 피 감시를 반환해야합니다 .switchMap에 전달하는 기능을해야합니다.