У меня есть форма, и я разрешаю пользователю нажимать столько раз, сколько он хочет, на кнопку обновления.Конечно, я использую оператор debounceTime
, но я не знаю, как:
- отменить предыдущие http-запросы
- или указать моей службе, чтобы она возвращала значениепоследнее излучение.
Например:
- t1: click => полученные данные за 2000 мс
- t2: click => полученные данные за 200 мс
Поэтому я получу данные с момента времени t1, тогда как самый последний - с момента времени t2.
Я пробовал с pipe(last())
, switchMap
, но я не возвращаю данные.
Мой компонент:
this.filtersForm.valueChanges.pipe(debounceTime(500)).subscribe(
form => {
this.service.setFilters(form); // Set private field in service (1)
this.onSubmit();
}
);
onSubmit() {
if (this.filtersForm.valid) {
this.service.notifFiltersHasChanged();
}
}
Сервис:
ctor(...) {
this.filters$.subscribe(f => this.getData());
}
notifFiltersHasChanged() {
this.filters$.next(this._filters); // (1) _filters is set by setFilters method
}
getData(): void {
// ...
this.backEndService.getAll(this._filters).subscribe(data => this._data = data);
}
BackEndService:
getAll(filters: any): Observable<Data> {
return this.httpClient.get<Data>(url).pipe(last());
}