Witam, mam kod, który zapisuje pobrane słowniki do tablicy (a na wejściu sprawdza, czy szukany obiekt jest już w środku niej).
podajSlownik(slownik: Slowniki): Observable<Wartosc[]> {
const cache = _.find(this._slowniki, function (obj: Slownik) {
return obj.nazwa === Slowniki[slownik];
});
if (cache) {
return of(cache.wartosci);
} else {
return this._slownikiApi.podajSlownik(slownik).pipe(
map(response => {
this._slowniki.push(response);
return response.wartosci;
})
);
}
}
Ogólnie mój cache działa zawsze oprócz pierwszego wczytania danego widoku. Debugguje sobie funkcję i jest problem z widocznością tablicy z responsami. W środku map zmienna this._slowniki ma wszystkie pushowane obiekty, aczkolwiek już dla funkcji find na samym początku jest to tablica pusta ( bo dla danego widoku ta funkcja jest odpalana powiedzmy 10 razy).
Czy ktoś potrafi mi wytłumaczyć dlaczego? Po ponownym odświeżeniu widoku, już znajduje całą tablicę, którą zapełniono wcześniej.