У меня есть элемент ввода, где я хочу показать решение для автозаполнения. Я пытаюсь контролировать номер HTTP-запроса с помощью Rx JS. Я хочу сделать: HTTP-запрос запускается только через 1 секунду, пользователь прекращает ввод.
У меня есть этот код:
of(this.inputBox.nativeElement.value)
.pipe(
take(1),
map((e: any) => this.inputBox.nativeElement.value),
// wait 1 second to start
debounceTime(1000),
// if value is the same, ignore
distinctUntilChanged(),
// start connection
switchMap(term => this.autocompleteService.search({
term: this.inputBox.nativeElement.value
})),
).subscribe((result: AutocompleteResult[]) => {
console.log(result);
});
Проблема в том, что debounceTime(1000)
не сделал ждать, чтобы продолжить трубу. SwitchMap запускается сразу после каждого события keyup.
Как можно подождать 1 секунду после того, как пользователь закончит ввод?