具有debounceTime的Angular HttpClient请求不会等待DueTime

时间:2018-09-24 19:48:35

标签: angular rxjs

我正在尝试为用户过滤表列时发生的http请求实现一个debounceTime:

this.myService.getData()
  .pipe(debounceTime(1000), distinctUntilChanged())
  .subscribe((res) => {
    // Do work
  });

但是它不等待1000ms的DueTime。

我一定犯了一个错误,因为删除所有管道时它的行为完全相同,但是在哪里?

2 个答案:

答案 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);