角度可观察的缓存数据

时间:2018-12-20 13:05:17

标签: angular typescript rxjs observable

我有一个基于Angular 6的angular项目,我的API是 .net core 2.1。

我已经实现了分页。 使用邮递员在 .net核心 API中调用分页方法非常有效。 从有角度的一端,我使用可观察的。在ngOnInit事件中,我调用fetchRecords()函数,并显示前10条记录。当我单击下一步时,我再次调用fetchRecords()方法并传递正确的分页参数,但是该页面仍保留前10条记录,在console.log()中我还注意到来自API的记录仍然相同的前10条记录。我有一个刷新按钮,它再次调用fetchRecords()方法,当我立即单击刷新按钮时,没有任何变化。但是,如果我等待约7+秒,则会显示接下来的10条记录。 在我的可观察范围内是否进行了某种形式的缓存,可以使请求响应保持几秒钟?如果是这样,我该如何纠正?

/* My Fetch Requests method in my component.ts */

fetchRecords(){

let requestData:any = {
   skip: (this.page * this.rowsPerPage) - this.rowsPerPage,
   take: this.rowsPerPage
}


this.api.post('apiUrl/fetchRecords', requestData).subscribe(res=>{ // this is where i subscribe
 console.log('results', res); // Does not change unless delayed for 10 seconds
}
error=>{

})

}



goToNextPage(){
  this.page = this.page + 1;
    this.fetchRecords(); 
}

goToPreviousPage(){
  this.page = this.page - 1;
    this.fetchRecords();
}



/* Post Method */

post(url, obj) : Observable<any>{
    return this.http.post(`${this.baseUrl}/${url}`, obj, this.options)
    .map((response: Response) => {
        return response.json();
    });
}

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 显然我只是从http请求中实现角度缓存响应。我尝试添加无缓存的Cache Control标头,但所有其他方法均无效。最终有效的方法是,将一个唯一的日期字符串作为参数添加到我的帖子网址中(成功地使每个请求网址都唯一),并且即使连续快速地加载,我的请求也可以正常运行。这是一段代码

post(url, obj) : Observable<any>{
    return this.http.post(`${this.baseUrl}/${url}`+ "?"+new Date().toString(), obj, this.options)
    .map((response: Response) => {
        return response.json();
    });
}

感谢大家的贡献。