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 map 或
switch map.
我认为您正在寻找 combineLatest or forkJoin,不同之处在于 combineLatest 在两个 Observable 上激发的每个数据上发射,而 forkJoin 在两个 Observable 完成时发射。在大多数情况下,您应该使用 combineLatest
.
例如,当使用 combineLatest
时,源 number$
触发了一个值但源 text$
没有触发,然后管道等待 text$
触发一个值值,然后将它们都发送给订阅者,然后在它们触发新值时保持从两个源发出最新值。并记得在销毁时取消订阅。
combineLatest(number$,text$).subscribe(([numberValue,textValue]) => {
// Do your logic
})
我有 2 个 Observables number$ 和 text$。 我想 同时订阅两者 并在内部订阅中获取它们的值。
我的代码现在看起来像这样:
number$.subscribe((nr: number) => {
text$.subscribe((txt: string) => {
this.foo(nr, txt);
});
});
有没有办法将这两者结合起来,这样我只需要一个订阅? 我知道 forkJoin(在这里可能会很好地工作),但它已被弃用,我们不想使用已弃用的函数。
提前致谢!
如果您想并行触发事件,您应该使用 fork join。
如果您想一个接一个地调用事件,您可以使用 merge map 或 switch map.
我认为您正在寻找 combineLatest or forkJoin,不同之处在于 combineLatest 在两个 Observable 上激发的每个数据上发射,而 forkJoin 在两个 Observable 完成时发射。在大多数情况下,您应该使用 combineLatest
.
例如,当使用 combineLatest
时,源 number$
触发了一个值但源 text$
没有触发,然后管道等待 text$
触发一个值值,然后将它们都发送给订阅者,然后在它们触发新值时保持从两个源发出最新值。并记得在销毁时取消订阅。
combineLatest(number$,text$).subscribe(([numberValue,textValue]) => {
// Do your logic
})