Rxjs 逻辑或组合2个或多个可观察流

Rxjs 逻辑或组合2个或多个可观察流,rxjs,ngrx,Rxjs,Ngrx,我有两个观测值,它们都表明它们是否正在加载数据。它们来自@ngrx/data loadingA$: Observable<boolean> loadingB$: Observable<boolean> 加载$:可观察 加载B$:可观察 我想使用rxjs或更优雅的方法,将两者结合起来,在其中一个为真时执行任何操作。可能是ramdajs?,可能是组合加载状态?然而,不同的组件需要不同的加载流组合 另外,如果我有20条流,它不应该仅限于2条流 (!)我不想分配其他局部变量

我有两个观测值,它们都表明它们是否正在加载数据。它们来自@ngrx/data

loadingA$: Observable<boolean>
loadingB$: Observable<boolean>
加载$:可观察
加载B$:可观察
我想使用rxjs或更优雅的方法,将两者结合起来,在其中一个为真时执行任何操作。可能是ramdajs?,可能是组合加载状态?然而,不同的组件需要不同的加载流组合

另外,如果我有20条流,它不应该仅限于2条流

(!)我不想分配其他局部变量

combineLatest(loadingA$, loadingB$).pipe(map((a, b) => a || b));

const{combinelatetest,BehaviorSubject}=rxjs;
const{map}=rxjs.operators;
const anyLoading=(…可观测项)=>组合相关测试(可观测项)。管道(
映射(bools=>bools.some(加载=>loading))
);
const loadingA$=新行为主体(false);
const loadingB$=新行为主体(true);
anyLoading(loadingA$,loadingB$).subscribe(loading=>{console.log(loading);});
加载b$.next(false)

类型“Observable”上不存在属性“some”。
这不是打字错误。我抄的第二行和你写的一模一样。对不起,我漏掉了管道里的地图。更新了工作演示。:D都很好,谢谢你的回答。它记录值false、true、true、false(结束)。但是,该组件不会使用*ngIf显示或隐藏,但这超出了问题的范围。事实证明,加载并没有花费足够长的时间来实际显示加载元素。是的,再次谢谢你。
const anyLoading = (...observables: Observable<boolean>[]) => combineLatest(observables).pipe(
  map(bools => bools.some(loading => loading))
);
anyLoading(loadingA$, loadingB$);