#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)