等到两个 Observable 完成
Wait until two Observables are complete
我想在两个 Observable 返回值后调用一个方法。我做了一些搜索,似乎 forkJoin
是我想要的,但我无法让它工作。我知道这两个 Observable 都在返回值,因为我在组件的其他地方单独使用每个 Observable 的数据,所以很明显我做错了其他事情。
这是我试过的。我正在使用 rxjs v6.4.
forkJoin(
this.store.pipe(select(fromStore.getAppointmentsLoading)),
this.clientStore.pipe(select(fromClientStore.getClientsLoading)),
).subscribe(
([res1, res2]) => {
console.log('res1', res1);
console.log('res2', res2);
},
err => console.error(err),
);
没有任何内容记录到控制台,我也没有收到任何错误。同样,我传递的 Observables 肯定有返回值。
我是做错了什么,还是完全使用了错误的方法forkJoin
?
forkJoin
在所有 observable 完成时(或其中之一抛出错误时)发出,而不是在它们发出时发出。
您可以改用 combineLatest
。
注意不要 从'rxjs/operators'
导入实例运算符。这是一些 IDE 的自动导入功能导致的常见错误。在这种情况下,我们需要从 'rxjs'
:
导入的静态版本
import {combineLatest} from 'rxjs';
combineLatest([
this.store.pipe(select(fromStore.getAppointmentsLoading)),
this.clientStore.pipe(select(fromClientStore.getClientsLoading)),
]).subscribe(
([res1, res2]) => {
console.log('res1', res1);
console.log('res2', res2);
},
err => console.error(err),
);
我想在两个 Observable 返回值后调用一个方法。我做了一些搜索,似乎 forkJoin
是我想要的,但我无法让它工作。我知道这两个 Observable 都在返回值,因为我在组件的其他地方单独使用每个 Observable 的数据,所以很明显我做错了其他事情。
这是我试过的。我正在使用 rxjs v6.4.
forkJoin(
this.store.pipe(select(fromStore.getAppointmentsLoading)),
this.clientStore.pipe(select(fromClientStore.getClientsLoading)),
).subscribe(
([res1, res2]) => {
console.log('res1', res1);
console.log('res2', res2);
},
err => console.error(err),
);
没有任何内容记录到控制台,我也没有收到任何错误。同样,我传递的 Observables 肯定有返回值。
我是做错了什么,还是完全使用了错误的方法forkJoin
?
forkJoin
在所有 observable 完成时(或其中之一抛出错误时)发出,而不是在它们发出时发出。
您可以改用 combineLatest
。
注意不要 从'rxjs/operators'
导入实例运算符。这是一些 IDE 的自动导入功能导致的常见错误。在这种情况下,我们需要从 'rxjs'
:
import {combineLatest} from 'rxjs';
combineLatest([
this.store.pipe(select(fromStore.getAppointmentsLoading)),
this.clientStore.pipe(select(fromClientStore.getClientsLoading)),
]).subscribe(
([res1, res2]) => {
console.log('res1', res1);
console.log('res2', res2);
},
err => console.error(err),
);