Как вы это делаете? RxJs по-прежнему остается загадкой для меня.RxJs - повторить все события после каждого всплеска событий
Я пытался вещи, как:
filterChanges
.delay(400)
.replay()
.reduce(function(acc,x) { return acc.concat(x) }, [])
.subscribe(function(changes) {
console.log(changes);
...
Или
filterChanges.subscribe(function() {
filterChanges.aggregate(function(changes) {
...
Я действительно очень потерял здесь. Поведение, которое я хочу: некоторые действия пользователя приводят к нескольким изменениям фильтра. Я не хочу обрабатывать их по одному, но только когда завершение изменений завершено. Но когда я их обрабатываю, я хочу, чтобы все изменения фильтра начинались с начала потока.
Теперь, когда я пишу это, я понимаю, что было бы лучше просто получить все фильтры после всплеска изменений, не все изменения сами, поэтому мне просто нужно поймать конец рывка. Я бы хотел ответить на оба вопроса, потому что я думаю, что это поможет мне лучше понять RxJs.
- Подпишитесь на рассылку событий.
- Подпишитесь на конец всплеска событий и запишите все события из начала потока.
Похоже, что вам нужна комбинация буфера и сканирования. Буфер для группировки всех действий, которые происходят в течение заданного периода времени, и Сканирование для использования этого буферизованного потока и сохранения списка, который накапливает все наблюдаемые значения. – Chris
Можете ли вы уточнить, что вы имеете в виду под «фильтрами»? –
Мой вариант использования: Фильтры принимают простую форму атрибута/значения: поэтому фильтр 'state -> Texas 'исключает все записи, в которых находится штат Техас. Я использую ту же схему с фильтрами даты, потому что в моих данных имеется небольшое количество отдельных дат. Поэтому, если пользователь меняет дату начала или окончания, чтобы включить, фильтры для нескольких отдельных дат могут быть установлены или удалены сразу. Всякий раз, когда меняются фильтры, я просматриваю все настройки записей или отменяет флаг .hidden. Но если пользователь отключает некоторые фильтры (например, расширяет диапазон дат), я не могу отображать записи, которые все еще скрыты каким-либо другим фильтром. – Sigfried