Используйте switchMap, чтобы новый поисковый запрос отписывал предыдущий; Angular HttpClient при отписке отменяет текущую клиентскую операцию.
Есть поисковый фильтр с debounce: первый запрос уходит для одного слова, затем второй — для нового слова, но первый ответ приходит последним и перезаписывает UI. Как с этим бороться в Angular?
Используйте switchMap, чтобы новый поисковый запрос отписывал предыдущий; Angular HttpClient при отписке отменяет текущую клиентскую операцию.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Используйте switchMap, чтобы новый поисковый запрос отписывал предыдущий; Angular HttpClient при отписке отменяет текущую клиентскую операцию.
Обычная цепочка — debounceTime, distinctUntilChanged, switchMap; catchError размещают внутри, чтобы ошибка не завершала весь поток ввода. Если старый результат нужно исключать сразу при любом новом вводе, перенесите задержку внутрь внешнего switchMap или проверяйте версию поискового значения.