Вы можете разделить цепочку, используя multicast
, а затем добавить tap
для обоих условий и после этого просто игнорировать результаты, которые вам не нужны:
range(1, 10)
.pipe(
multicast(() => new Subject(),
o => merge(
o.pipe(
filter(v => v % 2 === 0),
tap(v => console.log('true', v)),
),
o.pipe(
filter(v => v % 2 !== 0),
tap(v => console.log('false', v)),
ignoreElements(),
),
)
),
)
.subscribe(v => console.log('result', v));
Это немного длинно, но правильно расщепляетсяисточник в две цепочки.
Демонстрация в реальном времени: https://stackblitz.com/edit/rxjs6-demo-yarhux?file=index.ts