Время дебатов без работы с поиском? Угловой 9

#angular

Вопрос:

Я пытаюсь установить время отмены в своих поисках, но безрезультатно… Проверьте мой код:

 ngOnInit(): void {  this.search.valueChanges.subscribe(  (selectedValue) =gt; {  this.searchVal(selectedValue)  }  );  }   private getAllDrivers(query: string) {  console.log('gar')  return this.accountsService.getDrivers(query)  .pipe(  debounceTime(800),  distinctUntilChanged(),  map((data: any) =gt; {  data.body?.forEach((driver: IDriver) =gt; {  driver.name = `${driver.firstName} ${driver.lastName}`  });  return data.body || [];  }),  tap(() =gt; noop, err =gt; {  this.errorMessage = err amp;amp; err.message || 'Something goes wrong';  })  )  }   public search: FormControl = new FormControl(null);  

HTML:

 lt;input [formControl]="search"gt;  

Почему бы не использовать этот код?

когда я ищу что-то каждое мгновение, я получаю http get …Мне нужна любая задержка на полсекунды , секунды …

Я также пытаюсь с :

 this.search.valueChanges.  .pipe(debounceTime(800))  subscribe(  (selectedValue) =gt; {  this.searchVal(selectedValue)  } );  

тоже никакой работы…

Ответ №1:

Вы должны debounceTime это сделать, switchMap но ваш второй пример должен более или менее сработать.

Предполагая, что this.search.valueChanges это наблюдаемые изменения пользовательского ввода

 this.search.valueChanges.pipe(  debounceTime(800),  distinctUntilChanged(),  switchMap(query=gt;this.accountsService.getDrivers(query)) ).subscibe(results =gt; do sometinh)