如果任意一个可观察性在未知量的可观察器中返回true,如何返回true



我有一个函数,其中可能定义了许多未知的可观察性:


class Foo {
show$(multipleObservables$: Observable<boolean>[]): void {
// ...
}
}

在我使用这个类的地方,可观察性的数量是不同的。可能是1,但也可能是3:

const observableOne$ = of(false);
const observableTwo$ = of(true);
const observableThree$ = of(false);
const observables$ = [observableOne$, observableTwo$, observableThree$];
Foo.show$(observables$);

当任何可观测值为true时,我如何编写show$函数以返回true,或者当它们都为false时,我该如何编写show$function以返回false?

我读过这篇文章,但前提是你已经知道可观测的数量。有没有一种方法可以在不知道正手可观测值的情况下创建这个函数?

这将取决于源Observables是否要完成。如果你只使用of(),你可以这样做:

show$(multipleObservables$: Observable<boolean>[]) {
return forkJoin(multipleObservables$)
.pipe(
map((results: boolean[]) => results.some(Boolean)),
);
}

在这种情况下,您可以对任何数量的可观测值使用combineLatest:

const observables$ = [of(false), of(true), of(false)];
const myBool$ = combineLatest(observables$).pipe(result => result.some(x => x));

最新更新