У меня есть поток, который запускается next()
методом Rx BehaviorSubject
. Как я могу поделиться потоком pipedData$
между подписчиками?
Я пытался использовать оператор share
здесь, чтобы избежать тяжелых пересчетов внутри оператора map
, но не повезло - каждый подписчик производит пересчеты.
вот стеклиц для этой проблемы
Также возможно ли получить количество подписчиков из источника?
import { interval, BehaviorSubject } from 'rxjs';
import { take, map, tap, share, debounceTime } from 'rxjs/operators';
const data$ = new BehaviorSubject(null);
interval(1000).pipe(
tap(x => console.log('emit:')),
take(3)
).subscribe((x)=>{
data$.next(x)
});
const pipedData$ = data$.pipe(
debounceTime(30),
share(),
map(x => Math.random()),
);
console.log("--=-=-=-=--=-=----=-=-=-=-==-")
pipedData$.subscribe(x => console.log(x));
pipedData$.subscribe(x => console.log(x));
pipedData$.subscribe(x => console.log(x));