AngularInDepth се отдалечава от Medium. По-новите статии се хостват на новата платформа inDepth.dev. Благодарим ви, че сте част от дълбокото движение!

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

Нека да видим как RxJS библиотеката ми помогна!

Дебоунжиране на всеки запис

Без необходимост от незабавно извършване на първоначална операция, решението може да изглежда така:

Имайте предвид, че всеки запис се отклонява, следователно трябва да изчакате 2 секунди (време за отбиване), за да се появи първият console.log (знак за извършване на филтриращо действие).

Исках обаче да извърша първоначалната операция възможно най-скоро.

Дебоунжиране на всеки запис с изключение на първия

Тук идва силата на RxJS операторите.

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

и ги комбинира, както следва:

Останалата част от класа FrameworksService остана непроменена.

С горното решение ще видите първия console.log незабавно, докато следващите заявки ще бъдат отхвърлени.