Mam następujący problem: potrzebuję filtrować listę według określonych kryteriów (konkretnie zaznaczone w dropdownie checkboxy). Problem w tym, że jeśli dwukrotnie szybko wykonamy requesty (np. zaznaczymy opcję 'zaznacz wszystkie pozycje', a następnie szybko odklikamy), w bardzo podobnym czasie pójdą dwa zapytania do tej samej metody z api. I zdarza się, że w pierwszej kolejności zostaje zwrócona odpowiedź dla drugiego z tych requestów (więc ta oczekiwana), a następnie zostaje nadpisana przez pierwszą, nieaktualną. Finalnie, mimo że np. mamy wyfiltrowaną tylko jedną pozycję na liście, pojawią się wszystkie.
Metoda wygląda następująco:
private search(): void {
const searchCriteria = this.prepareSearchCriteria();
this.service.search(searchCriteria, false).subscribe(x => {
if(result) {
this.items = result.items;
}
});
}
Pytanie, w jaki sposób zakolejkować, żeby odpowiedzi przychodziły w tej kolejności, w jakiej zostały wysłane i czy da się to zrobić na poziomie frontendu. Ewentualnie być może można by po każdym następnym wejściu do metody anulować poprzednią subskrypcję i rozpocząć następną. Pytanie, co byłoby tutaj najbardziej poprawne. Jak ktoś ma jakieś doświadczenie w podobnym temacie, prosiłbym o pomoc.