2017-04-13 2 views
2

저는 Angular2 HTTP 서비스에 캐싱을 추가하려고하는데 그냥 알아낼 수 없습니다.Angular2 & RxJS - 매개 변수를 사용하는 서비스 캐싱

다른 게시물을 추적하여 매개 변수를 사용하지 않는 HTTP 서비스에서 완벽하게 작동하도록했습니다.

workSummaries = this.http.get('http://locahost:8080/teams') 
      .map((response: Response) => response.json()) 
      .publishReplay(1, 3000) 
      .refCount() 
      .take(1); 

그러나 요청과 함께 보내야하는 teamId 매개 변수를 소개 할 때 위의 작업을 수행 할 수 있습니다.

이상적으로 동일한 teamId가 마지막 X 초에 사용 된 경우 새 팀 ID이거나 3 초가 지난 후에 캐시에서 읽기 만하면됩니다.

도움이 될 것입니다.

감사합니다. Kevin.

+0

는 '지도 사용 <번호를 관찰 가능한 > – n00dl3

+0

는했으나' 그 생각은 좋은 생각 같아 보입니다. 이 라인이 어떻게 생겼는지를 대략적으로 보여주기 위해 몇 줄을 함께 해킹 할 수있을만큼 충분히 친절하십니까? 내 JS가 최고가 아니기 때문에 나는 자바 배경에서 온다! – kevfuzz

답변

3

당신은 (내가 관찰 창조 부분을 만지지 않았다)을 teamID/팀 관계를 유지하기 위해지도를 사용할 수 있습니다

summaries = new Map < number, Observable <Team>>(); 

getTeam(id: number) { 
    if (!this.summaries.get(id)) { 
    let team = this.http.get('http://locahost:8080/teams/' + id) 
     .map((response: Response) => response.json()) 
     .publishReplay(1, 3000) 
     .refCount() 
     .take(1); 
    this.summaries.set(id, team) 
    } 
    return this.summaries.get(id); 
} 
+0

감사합니다. 그것이 잘 작동하고 있다고 생각하십시오. – kevfuzz

관련 문제