Bizibah Павел Гуров

cache-observableархив

Декоратор для Angular-сервисов: помечаете метод — и одинаковые запросы перестают уходить на сервер по десять раз.

Открыть проект www.npmjs.com/package/cache-observable

Исходники

TypeScriptRxJSAngularnpm

1 минута чтения код

Типичная беда фронтенда: несколько компонентов на странице одновременно просят одни и те же данные, и в сеть уходит пачка одинаковых запросов. Лечится это кешем, но писать его в каждом сервисе руками скучно.

Декоратор @CacheObservable(ms) вешается на метод, который возвращает поток, и дальше всё происходит само: первый вызов идёт на сервер, остальные в течение указанных миллисекунд получают уже полученный ответ. Внутри — publishReplay, refCount и take(1), то есть ровно та связка, которую иначе пришлось бы выписывать в каждом сервисе.

Написан во времена RxJS 5 и с тех пор живёт как есть.