我正在通过网格页面更改上的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));
}
}
发布于 2018-09-13 23:14:22
如果您不想将数据保存在角侧,您可以在服务中进行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 )
);
}
}
tap不会订阅,您可以在组件中正常订阅,当数据到达时,tap会将副本保存在内存中,因此下一次调用将返回该副本。
请参见SB中的一个示例(选项12 ):https://stackblitz.com/edit/angular-rb5vmu
您可以在日志中看到,首先从服务器获取调用,然后从缓存中获取调用。
https://stackoverflow.com/questions/52320641
复制相似问题