Могу ли я хранить данные в памяти по HTTPGET? - PullRequest
0 голосов
/ 13 сентября 2018

Я вызываю данные с сервера через вызов API на странице изменения сетки. При вызове этого метода я динамически получаю схему таблицы для всех столбцов и выполняю другую работу с ним на угловой стороне.

Проблема в том, что мне нужно получить данные таблицы только один раз.

Как я могу хранить данные в памяти, чтобы, если пользователь изменяет страницу на стороне клиента, мне не приходилось снова обращаться к базе данных только для получения данных схемы?

 [Route("api/MyRoute/GetData/{Skip}/{Take}")]
        [HttpGet]
        [AllowAnonymous]
        public HttpResponseMessage GetData(string Skip, string Take)
        {
            try
            {
                if (Result == null)
                {
                    Result = DynamicSqlQuery(Convert.ToInt32(Skip), Convert.ToInt32(Take));
                }
}

1 Ответ

0 голосов
/ 14 сентября 2018

Если вы не хотите сохранять данные в угловом положении, вы можете воспользоваться услугой, в которой вы делаете http-вызов, например,

dataStructure = [];

getDataStructure() {

   if (this.dataStructure) {
      return this.dataStructure;
   }else{

  return this.http.get<any>(
           this.url + 'values',
                { headers: headers }
              ).pipe( 
                tap( data => this.cachedData = data )
              );

   }                        
}

тап не будет подписываться, вы подписываетесь как обычно в вашем компоненте, когда данные поступают, тап сохраняет копию в памяти, поэтому следующий вызов возвращает эту копию.

См. Пример в SB (вариант 12): https://stackblitz.com/edit/angular-rb5vmu

вы можете увидеть в журнале, что сначала вызов поступает с сервера, а затем из кеша.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...