AngularInDepth се отдалечава от Medium. По-новите статии се хостват на новата платформа inDepth.dev. Благодарим ви, че сте част от дълбокото движение!
Наскоро работех върху задача, изискваща филтриране и сортиране на данни от страна на интерфейса. Попаднах на проблем, при който исках да отстраня въведеното от потребителя, за да намаля броя на операциите за филтриране и сортиране, но първоначалната операция трябва да се извърши възможно най-скоро (без отклоняване).
Нека да видим как RxJS библиотеката ми помогна!
Дебоунжиране на всеки запис
Без необходимост от незабавно извършване на първоначална операция, решението може да изглежда така:
Имайте предвид, че всеки запис се отклонява, следователно трябва да изчакате 2 секунди (време за отбиване), за да се появи първият console.log (знак за извършване на филтриращо действие).
Исках обаче да извърша първоначалната операция възможно най-скоро.
Дебоунжиране на всеки запис с изключение на първия
Тук идва силата на RxJS операторите.
Просто създадох два потока, представляващи заявка, а именно:
и ги комбинира, както следва:
Останалата част от класа FrameworksService остана непроменена.
С горното решение ще видите първия console.log незабавно, докато следващите заявки ще бъдат отхвърлени.