@beta-it

Как организовать кэширование API запросов в Angular 2?

Есть приложение на Angular 2, которое делает достаточно большое количество запросов к серверу, при навигации по компонентам, может кто нибудь знает как этого можно избежать?
  • Вопрос задан
  • 548 просмотров
Решения вопроса 1
ozknemoy
@ozknemoy
яваскриптист
вот метод из сервиса. key под каждый url свой. есть еще способ как в репо angular-universal. там мудренее но зато можно не повторять запросы которые делал сервер node

getUsersActivity(forceRefresh?:boolean) {
return this.getWithCache (
'user-activity',
'usersActivity$', forceRefresh)
};

getWithCache(url, key, forceRefresh?:boolean):any {
     
       if (!this[key]) {
            this[key] = new ReplaySubject(1)
        }

        // If the Subject was NOT subscribed before OR if forceRefresh is requested
        if (!this[key].observers.length || forceRefresh) {
            this.get(url).subscribe(
                (data) => this[key].next(data),
                (error) => {
                    this[key].error(error);
                    // Recreate the Observable as after Error we cannot emit data anymore
                    this[key] = new ReplaySubject(1);
                }
            );
        }

        return this[key];
    }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы