RXJS угловое поведениеСубъект испускает множественные значения - PullRequest
0 голосов
/ 02 июля 2018

введите описание изображения здесь Я использую BehaviorSubject для обмена данными между компонентами моего приложения, у меня проблема с производительностью из-за многократного выброса одного и того же значения из BehaviorSubject. Например, я вызываю http, чтобы получить команду Object из бэкэнда и сохранить ее в entitySubject, многие компоненты подписываются на этот BehaviorSubject. Каждый компонент получает значение из подписки и выполняет последовательность манипуляций со значением. Суть проблемы в том, что значение выдается много раз, и каждый компонент выполняет всю последовательность несколько раз. Я предполагаю, что BehaviorSubject испускает значение как количество подписчиков. Я не смог найти в Google ничего странного, что мне не хватает?

Количество раз, когда значение команды emit отличается от локального по сравнению с развертыванием. Вы можете увидеть печать "refetch возвращенное значение", это фактический ответ от http.

1 Ответ

0 голосов
/ 02 июля 2018

Вы можете частично исправить это, только принимая значения, отличные от последнего, таким образом пропуская оценку одного и того же значения несколько раз подряд.

Кроме того, если запрашиваемые данные могут совпадать с предыдущим запросом, было бы неплохо добавить их в любом случае:

import { distinctUntilChanged } from 'rxjs/operators';

this.myService.myObservable
    .pipe(distinctUntilChanged())
    .subscribe(value => {
        console.log(value);
    })
...