【发布时间】:2019-01-17 16:28:55
【问题描述】:
我有一个用 Angular6 编写的复杂计算器应用程序,它根据 ngModelChange 事件中的几个输入计算结果,并直接在图表中显示这些结果。计算在服务器端完成。现在我想添加一个去抖动时间,这样服务器就不会在每次按下按键时都收到请求。
我在 ngModelChange 中触发的计算方法如下所示:
async calculate(){
if(this.checkInputs()){
try{
let returnDto = await this.webApiService.calculate(new CalculatorInputDto(this.model)).toPromise();
this.outputCalculate.emit(returnDto);
}
catch(e){
console.log(e);
}
}
还有我的服务方式:
calculate(dto: CalculatorInputDto): Observable<any> {
let url = this.baseUrl + "calculate";
return this.http.post(url, JSON.stringify(dto), this.options)
.pipe(
debounceTime(5000),
map((res => res.json())),
catchError(error => this.handleError(error))
);
}
如您所见,我已经在我的服务中尝试了 debounceTime(5000),但似乎没有任何改变。
有人知道我该如何解决这个问题吗?
【问题讨论】:
-
您需要在您的
keypress订阅中使用debounceTime,这里没有
标签: angular typescript rxjs angular6 debouncing