Как регулировать ngxs @ Выбрать наблюдаемый
Я создаю приложение, используя ngxs в качестве менеджера состояний. Мое приложение отображает поток сообщений, которые разбиты на страницы, но все сообщения находятся в состоянии, которое в моем случае составляет около 1000. У меня есть селектор, который разбивает посты на посты, но когда приложение изначально загружается, у меня возникает огромный скачок производительности по мере поступления постов.
Я пробовал что-то радикальное, как это:
this.currentFeedSettings = this
.store
.select(CurrentFeedSettingState)
.pipe(
throttleTime(10000),
);
Но некоторые сообщения показываются практически мгновенно, а не через 10 секунд. Я делаю что-то неправильно?
1 ответ
Я бы порекомендовал оператора debounce.
debounce задерживает значения, испускаемые источником Observable, но отбрасывает предыдущие ожидающие отсроченные выбросы, если новое значение поступает в источник Observable. Этот оператор отслеживает самое последнее значение из источника Observable и порождает Observable длительности, вызывая функцию durationSelector.
В вашем коде это будет выглядеть так:
this.store
.select(CurrentFeedSettingState)
.pipe(debounceTime(100))
.subscribe((res) => { ... });