Как регулировать 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) => { ... });

Другие вопросы по тегам