Pipe устанавливает новую наблюдаемую, которая ничего не делает, пока не подписана.Это не предмет поведения, доступ к значению которого можно получить с помощью getValue.Вы должны подписаться на него, или это холодная наблюдаемая, и нет никаких данных, идущих вниз по течению вообще.Поместите console.log в функцию карты, и вы увидите, что он даже не вызывается, если нет подписки.
Вы можете написать функцию развертки, если вы на 100% уверены, что подписка будет работатьсинхронно, как это будет, если он получен из объекта BehaviorSubject, но если вы передадите асинхронную наблюдаемую, результаты будут непредсказуемыми, скорее всего, с возвращением неопределенного.
const { BehaviorSubject } = rxjs;
const { filter, map } = rxjs.operators;
const inputNumber$ = new BehaviorSubject(2);
const numberAfterOperations$ = inputNumber$.pipe(
filter(a => (a+1) % 2), // filter out odd numbers
map(a => { console.log('mapping'); return a * a; }), // square it
);
inputNumber$.next(4);
console.log('No mapping has happened yet');
console.log(unwrap(numberAfterOperations$));
function unwrap(obs$) {
let value;
const sub = obs$.subscribe(val => { value = val; });
sub.unsubscribe();
return value;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/rxjs/6.4.0/rxjs.umd.min.js"></script>
Если вы используете Angular, вы можете использовать асинхронную трубу в представлении
{{ numberAfterOperations | async }}