我正在尝试为用户过滤表列时发生的http请求实现一个debounceTime:
this.myService.getData()
.pipe(debounceTime(1000), distinctUntilChanged())
.subscribe((res) => {
// Do work
});
但是它不等待1000ms的DueTime。
我一定犯了一个错误,因为删除所有管道时它的行为完全相同,但是在哪里?
答案 0 :(得分:0)
您正在这里做奇怪的事情:)。在这里,您告诉您在收到异步调用的响应后等待1秒。我认为这不是您想要的。您应该在组件中执行。
html:
<input [formControl]="autoCompletFormControl" type="text" />
ts:
autoCompletFormControl = new FormControl();
this.autoCompletFormControl.valueChanges.pipe(debounceTime(1000)).subscribe( (value) => {
this.service.getData(value).subscribe( (value) => {
this.values = values;
});
}
答案 1 :(得分:0)
如果您不能在服务调用之前将debounceTime与可观察的日期一起使用(例如valueChanges),则也可以通过以下方式做到这一点:
timer(1000).pipe(switchMap(() => this.service.getData(value)))
.subscribe(values => this.values = values);