我想在两个Observables返回值之后调用一个方法。我做了一些搜索,看来forkJoin
是我想要的,但我无法使它正常工作。我知道这两个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),
);
什么都没有记录到控制台,并且我没有收到任何错误。同样,我传递的Observable肯定是返回值。
我是在做错什么,还是完全通过使用forkJoin
来采取错误的方法?
答案 0 :(得分:3)
forkJoin
在所有可观察对象完成时发出,而不是在它们发出时发出。
您可以改用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),
);