我有一个基于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();
});
}
答案 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();
});
}
感谢大家的贡献。