2017-11-10 6 views
0

데이터가 들어 오기 때문에 flatMap을 사용하여 데이터를 가져 왔습니다. 내가 그 한 단계 후 가입하는 map를 사용하도록 flatMap에서데이터 스트림으로 이동하여 필터링 된 데이터 배열을 출력합니다. Rxjs

enter image description here

, 나는 영웅 객체를 원했다. 이제 문제는 데이터가 subscribe에 개별적으로 도착한다는 것입니다. 아래 그림과 같이.

enter image description here

나는 스트림 동안 모든 후 출력 구독의 모든 데이터의 배열을 수집 할 것입니다.

여기 내 코드입니다.

this.subscription = this.heroService.getAll() 
.flatMap(h=>{ console.log("From flatMap",h); return h}) 
.map((h : any)=>h.hero) 
.subscribe(heroes => { 
    console.log("From subscribe",heroes); 
}) 

다음과 같이 구독하고 싶습니다.

enter image description here

나는 그것에 대해 어떻게 가야합니까?

+0

항상 2 개의 값을 기다리고 있습니까? – joshrathke

+0

아니요 두 값만이 아닙니다. 'pairwise()'로 시도한 결과 두 값만 반환한다는 것을 깨달았습니다. –

+0

샘플 입력 및 출력 json 데이터를 추가 할 수 있습니까 – Aravind

답변

1

영웅의 배열을 구독하려면 flatMap을 사용하지 마십시오. 그냥지도 사용 :

this.subscription = this.heroService.getAll() 
.map((results:Array<any>) => results.map(r => r.hero)) 
.subscribe(heroes => { 
    console.log("From subscribe",heroes); 
}) 
1

toArray() 연산자를 사용할 수 있습니다.

toArray()은 Observable 소스를 완료해야합니다. 그렇지 않으면 아무 것도 방출하지 않습니다. 완료되지 않을 경우 scan() 연산자를 사용하여 직접 항목을 수집 할 수 있습니다.

+0

좀 구체적 수 있습니다. 'toArray()'또는'scan()'은 전체 체인에 어디에 들어 맞습니까? 플랫 맵 후에?,지도? –