AngularInDepth уходит от Medium. Более свежие статьи размещаются на новой платформе inDepth.dev. Спасибо за то, что участвуете в глубоком движении!

Недавно я работал над задачей, требующей фильтрации и сортировки данных на стороне интерфейса. Я столкнулся с проблемой, из-за которой я хотел заблокировать ввод данных пользователем, чтобы уменьшить количество операций фильтрации и сортировки, однако начальная операция должна быть выполнена как можно скорее (без отклонения).

Посмотрим, как мне помогла библиотека RxJS!

Откажитесь от каждой записи

Без необходимости немедленного выполнения начальной операции решение может выглядеть следующим образом:

Обратите внимание, что каждая запись обрабатывается, поэтому вам нужно подождать 2 секунды (время устранения неполадок), прежде чем появится первый console.log (признак выполнения действия фильтрации).

Однако я хотел выполнить начальную операцию как можно скорее.

Откажитесь от каждой записи, кроме первой

А вот и мощь операторов RxJS.

Я просто создал два потока, представляющих запрос, а именно:

и объединил их следующим образом:

Остальная часть класса FrameworksService осталась без изменений.

С помощью вышеуказанного решения вы сразу увидите первый console.log, а дальнейшие запросы будут отклонены.