'root' })
export class OccupationLabelRepository {
private occupationLabelDataCache: { [key: string]: Observable<OccupationLabelData> } = {};
constructor(private http: HttpClient) {
}
getOccupationLabelsByKey(type: string, value: string, language: string): Observable<OccupationLabelData> {
const cacheKey = `${type}_${value}_${language}`;
if (!this.occupationLabelDataCache[cacheKey]) {
// we cache the observable itself instead of the resolved value because the function is likely to be called in a loop
this.occupationLabelDataCache[cacheKey] = this.http.get<OccupationLabelData>(`${OCCUPATION_LABEL_RESOURCE_URL}/${type}/${value}`).pipe(
shareReplay(BUFFER_SIZE)
);
}
return this.occupationLabelDataCache[cacheKey];
}
//...
Вопрос - а как оно себя поведет, если возникнет временная ошибка на сервере? Получается, что если мой сервер две секунды лежал, а потом снова заработал, я закэширую его сообщения об ошибках?
а может использовать Service Worker для этих целей?
Обсуждают сегодня