Когда BehaviorSubject передается по конвейеру, он использует AnonymousSubject, как и обычный Subject. Таким образом, возможность вызова getValue() не передается по цепочке. Это было решение сообщества. Я согласен (как и некоторые другие), что было бы неплохо, если бы существовала возможность получить значение после конвейерной обработки, но, увы, это не поддерживается.
Итак, вам нужно будет сделать что-то вроде:
const source$ = new BehaviorSubject(value);
const published$ = new BehaviorSubject(value);
const subSource$ = source$.pipe(...operators, multicast(published$));
Затем вы можете вызвать getValue() для publish$, чтобы получить значение после того, как оно пройдет через ваши операторы.
Обратите внимание, что вам нужно будет либо вызвать connect() для subSource$ (что сделает его «горячим» наблюдаемым), либо использовать refCount().
Тем не менее, на самом деле это не самый rxjs-ишный способ делать вещи. Итак, если у вас нет конкретной причины для динамического получения значения после того, как оно проходит через вашего оператора, а не просто для подписки на него в потоке, может быть, переосмыслить подход?
person
Josh
schedule
13.12.2018