2017-12-20 9 views
0

일부 구성 요소에는 백엔드에서 동일한 데이터가 필요합니다. 그래서 그들은 모두 getDataMethod()를 호출합니다. 내가 약이 방법 3-4 번 호출이 기간 동안 오초에 와서이Get get Http get observable에서 하나의 인스턴스를 얻습니다.

public getData(): Observable<any> { 
    return this.http.get<any>(this.backendUrl); 
} 

응답 것 같습니다. 그래서 내 질문은 어떤 사람들이 여러 관찰자를 똑같이 여러 가입자에게 돌려 주겠다는 것입니까?

답변

0

는이 때마다 누군가가 관찰에 가입하여 API 엔드 포인트를 호출하지 않고 서버에서 결과를 재생할 수 있도록

public getData(): Observable<any> { 
    return this.http.get<any>(this.backendUrl) 
       .publishReplay(1) 
       .refCount(); 
} 

같은 replaySubject으로 응답을 게시 할 수 있습니다.

+0

'shareReplay (1)'가 짧습니다. –

-1

"캐시"변수를 사용할 수 있습니다.

data:any 
public getData(): Observable<any> { 
    if (this.data) 
    return Observable.of(this.data); 
    else 
    return this.http.get<any>(this.backendUrl).do((data:any)=> 
     { 
      this.data=data 
     }); 
} 
+0

요청이 완료되지 않은 상태에서 가입하면 여러 요청이 여전히 발생합니다. –