Зависит от того, что вы хотите сделать
хотите ли вы рассчитать на основе последнего значения? тогда ваш подход в порядке, но вместо этого используйте combLatest, любое излучение вызовет вычисление.
this.subscription = combineLatest(behaviorSubject1$, behaviorSubject2$, behaviorSubject3$)
.pipe(throttleTime(300))
.subscribe(([o1, o2, o3]) => {
const answer = getSolution(o1, o2, o3);
});
вы хотите вычислить все из них, кроме одного? используйте concatMap.
this.subscription = combineLatest(behaviorSubject1$, behaviorSubject2$, behaviorSubject3$).pipe(
concatMap(([o1, o2, o3]) => getSolution(o1, o2, o3)), // getSolution should be an observable.
)
.subscribe(solution => {
});
вы хотите игнорировать выбросы во время расчета? используйте выхлопную карту.
this.subscription = combineLatest(behaviorSubject1$, behaviorSubject2$, behaviorSubject3$).pipe(
exhaustMap(([o1, o2, o3]) => getSolution(o1, o2, o3)), // getSolution should be an observable.
)
.subscribe(solution => {
});
вы хотите рассчитать, когда все 3 были изменены? используйте zip.
this.subscription = zip(behaviorSubject1$, behaviorSubject2$, behaviorSubject3$)
.subscribe(([o1, o2, o3]) => {
const answer = getSolution(o1, o2, o3);
});