RXJS - 同时订阅 2 个 Observables 并获取两个值

RXJS - Subscribe to 2 Observables simultaneously and get both values

我有 2 个 Observables number$text$。 我想 同时订阅两者 并在内部订阅中获取它们的值。

我的代码现在看起来像这样:

number$.subscribe((nr: number) => {
    text$.subscribe((txt: string) => {
        this.foo(nr, txt);
    });
});

有没有办法将这两者结合起来,这样我只需要一个订阅? 我知道 forkJoin(在这里可能会很好地工作),但它已被弃用,我们不想使用已弃用的函数。

提前致谢!

如果您想并行触发事件,您应该使用 fork join

如果您想一个接一个地调用事件,您可以使用 merge mapswitch map.

我认为您正在寻找 combineLatest or forkJoin,不同之处在于 combineLatest 在两个 Observable 上激发的每个数据上发射,而 forkJoin 在两个 Observable 完成时发射。在大多数情况下,您应该使用 combineLatest.

例如,当使用 combineLatest 时,源 number$ 触发了一个值但源 text$ 没有触发,然后管道等待 text$ 触发一个值值,然后将它们都发送给订阅者,然后在它们触发新值时保持从两个源发出最新值。并记得在销毁时取消订阅。

combineLatest(number$,text$).subscribe(([numberValue,textValue]) => {
 // Do your logic
})