RxJava воспроизведения для идентификатора (селектор)? - PullRequest
0 голосов
/ 28 июня 2019

У меня есть тип шины события потока, где события имеют идентификатор.Мне нужно воспроизвести последний элемент выбранного идентификатора подписчика при подписке.Если я использую только replay(1) и filter { it == id } на подписчике, то воспроизводится только последний элемент, поэтому подписчики, которые фильтруют другой идентификатор, не получат соответствующие повторы.

Мне нужно повторение вid.

Я замечаю перегрузку воспроизведения {функции}, но, похоже, не выполняет то, что хочу

Альтернативой является создание карты всех событий и ее фильтрация., но я надеюсь, что это можно сделать более чисто.

1 Ответ

0 голосов
/ 29 июня 2019

Observables не имеет никакого состояния.Операторы воспроизведения используют объекты и т. Д. Под колпаком, чтобы сохранить излучаемые данные.Вам придется пойти с вашей альтернативой.scan здесь вполне может подойти.Вот один лайнер, который содержит карту новейших событий:

source.pipe(scan((acc, curr: any) => ({ ...acc, [curr.id]: curr}), {}))

...