Angular отмена отправки запроса
У меня есть rest приложения, с ангуляра отправляю запросы на сервер для поиска данных. Данные отправляются каждые полторы секунды при вводе новых значений (аля живой поиск). Как я могу реализовать отмену отправки запроса, если он еще не пришёл? Т.е. я отправляю первый запрос и за ним сразу же второй, если ответа на первый еще нет надо чтобы сразу отображался ответ второго, без отображения первого. Подскажите, пожалуйста, каким способом я могу это реализовать.
Комонент ангуляр:
ngAfterViewInit() {
fromEvent(this.input.nativeElement, 'input')
.pipe(
filter(Boolean),
debounceTime(150),
distinctUntilChanged(),
tap((text) => {
this.searchNotes();
})
)
.subscribe();
}
searchNotes() {
this.page = 0;
this.getNotes();
}
getNotes() {
this.getCountNotes();
this.isLoaded = false;
this.noteService.getNotes(this.page, this.sortBy, this.searchNoteValue)
.subscribe((notes: Note[]) => {
this.userNotes = notes;
this.isLoaded = true;
}, error => {
if (error.status === 403) {
this.logOut();
}
});
}
notesService:
getNotes(page: number, sortBy: string, searchValue: string) {
return this.http.get(`/notes?page=${page}&sortBy=${sortBy}&searchValue=${searchValue}`);
}
Ответы (1 шт):
это не ответ на вопрос
это небольшое IMHO по работе с формами по типу проверки орфографии
Я не хочу останавливать бэк, пускай он там перегрузиться хоть. Я на фронте хочу отоброжать только один последний результат, а не все вызванные – джанго123
throttle- http://underscorejs.ru/#throttle
- https://lodash.com/docs/#throttle
там есть кнопкаsourceиnpm package
debounce- http://underscorejs.ru/#debounce
- https://lodash.com/docs/#debounce
там есть кнопкаsourceиnpm package
See David Corbacho's article for details over the differences between .debounce and .throttle.